当前位置: 移动技术网 > IT编程>开发语言>.net > websevice动态控制访问ip

websevice动态控制访问ip

2019年03月15日  | 移动技术网IT编程  | 我要评论

无回君,自由泳技巧,mm小游

      一般而言webservice是部署在哪台服务器,然后它的address location就是指向哪个,但是由于有些情况处于各种原因,如网络策略,需要先访问某个ip之后再进行跳转到一个ip,这个时候就需要代码控制websevice指向的ip地址了,就需要用到soapextensionreflector类了,重写里面的reflectdescription方法:如下

 

 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将使用会执行这个程序

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网