websevice動態控制訪問ip

      通常而言webservice是部署在哪臺服務器,而後它的address location就是指向哪一個,可是因爲有些狀況處於各類緣由,如網絡策略,須要先訪問某個ip以後再進行跳轉到一個ip,這個時候就須要代碼控制websevice指向的IP地址了,就須要用到SoapExtensionReflector類了,重寫裏面的ReflectDescription方法:以下web

 

 public override void ReflectDescription()
    {
        ServiceDescription description = ReflectionContext.ServiceDescription;
        foreach (Service service in description.Services)
        {
            foreach (Port port in service.Ports)
            {
                foreach (ServiceDescriptionFormatExtension extension in port.Extensions)
                {
                    try
                    {
                        SoapAddressBinding binding = extension as SoapAddressBinding;
                        string path = "http://1.1.1.1"; // 須要訪問的地址
                    {
                            string url = binding.Location;// 例如:http://localhost:8090/WebService/codes/new
                            //假如你websevice部署再2.2.2.2這臺服務器,那麼就將這個ip替換爲你須要訪問的ip,同時你也能夠根據binding.Location來判斷哪一個服務須要替換。
                             binding.Location = binding.Location.Replace("http://2.2.2.2", path);
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }
    }

  而後在web.config配置裏configuration節點裏加上以下節點服務器

  <system.web>
    <webServices>
      <protocols>
        <add name="HttpSoap"/>
      </protocols>
      <soapExtensionReflectorTypes>
        <add type ="類名,該類所在文件夾"/>
      </soapExtensionReflectorTypes>
    </webServices>
  </system.web>網絡

 注意:一但使用,則全部webservice將使用會執行這個程序ide

相關文章
相關標籤/搜索