none
调用WebService的疑问 RRS feed

  • 问题

  •         /// <summary>
            /// 通过Web References添加的引用
            /// </summary>
            public void WebReference()
            {
                WeatherWebReference.WeatherWebService proxyClient = new WeatherWebReference.WeatherWebService();
                proxyClient.Url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
                string[] result = proxyClient.getWeatherbyCityName("上海");
                Debug.WriteLine(result);
            }
    
            /// <summary>
            /// 通过Service References添加的引用
            /// </summary>
            public void ServiceReference()
            {
                WeatherServiceReference.WeatherWebServiceSoapClient proxyClient = new WeatherServiceReference.WeatherWebServiceSoapClient("WeatherWebServiceSoap");  
                string[] result = proxyClient.getWeatherbyCityName("上海");
                Debug.WriteLine(result);
            }

    我通过Web Reference添加的WebService能够通过生成的代理类的URL在C#的CodeBehind中改变

    URL

    请问我添加ServiceReference添加服务引用的时候如何通过生成的代理类在C#的CodeBehind中通过

    代码改变服务引用的地址呢?

    感谢了

    2014年5月26日 13:35

答案

全部回复

  • 我意思就是WebReference可以代码中改变

    proxyClient.Url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";

    我想在服务引用的代理类中也有代码可以如上设置

    另外请教下,2中添加WebService地址的方式细节上有多大区别呢?

    求教

    2014年5月26日 13:37

  • 我通过Web Reference添加的WebService能够通过生成的代理类的URL在C#的CodeBehind中改变

    URL

    请问我添加ServiceReference添加服务引用的时候如何通过生成的代理类在C#的CodeBehind中通过

    代码改变服务引用的地址呢?

    感谢了

     你好,

    根据你的叙述,我看到你想动态设置服务代理类的终结点地址,代理类是由WCF的svcutil.exe通过

    “add service reference” 创建的。所以你可以在其构造方法中改变终结点的地址。如下:

    /// <summary> /// 通过Service References添加的引用 /// </summary> public void ServiceReference() { WeatherServiceReference.WeatherWebServiceSoapClient proxyClient =

    new WeatherServiceReference.WeatherWebServiceSoapClient("WeatherWebServiceSoap", "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx" ); string[] result = proxyClient.getWeatherbyCityName("上海"); Debug.WriteLine(result); }

    希望对你有帮助,谢谢!

    2014年5月29日 2:24
    版主
  • 感谢您的热心回复

    我有个疑问:

    上述方法的RemoteAddress是通过构造函数作为参数传入,如果我在调用WebService

    过程中想改变RemoteAddress时候需要重新new 然后通过参数传入

    而WebReference中是通过URL属性设置,可以随时改变,请问类似于通过URL的方式设置,

    在WCF添加服务引用中没有吗?

    感谢了

    2014年5月29日 12:15
  • 你好,

    我们是基于终结点(endpoint)来调用WCF服务的。终结点包括地址,绑定和协议。

    终结点地址就是我们调用service的url。 所以我们要动态改变的是终结点地址。

    # 就像我上一个帖子通过代理类构造方法传入终结点地址。

    #还可以通过代理类对象的终结点属性设置其地址, 如下。

    WeatherServiceReference.WeatherWebServiceSoapClient proxyClient = 
    
    new WeatherServiceReference.WeatherWebServiceSoapClient("WeatherWebServiceSoap" );  
    proxyClient.Endpoint.Address=  new EndpointAddress("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
    string[] result = proxyClient.getWeatherbyCityName("上海");

    谢谢!



    2014年5月30日 1:28
    版主
  • 和你客户端添加服务引用的 版本有关系。

    如果你是WCF引用方式,生成的代码是WCF调用方式的。如果还是.NET3.0之前的版本应该还是老的方式。

    服务地址 WCF完全可以通过构造函数参数进行传递给Proxy实力


    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    微软WCF技术群:166599314

    2014年6月2日 15:11
    版主