我在写一个应用程序,它使用SOAP服务来发送数据。用户可以在应用程序设置中更改URL端点。C#Web参考 - 动态URL错误
这是我做的:
public HubHandler()
{
this.urlHub = Settings.Default.UrlWebService;
//some code
this.connect();
}
private void connect()
{
this.service = new HubService();
this.service.Proxy = System.Net.HttpWebRequest.GetSystemWebProxy();
this.service.Proxy.Credentials = CredentialCache.DefaultCredentials;
this.service.Url = this.urlHub;
}
其实我只是改变了服务的URL属性,从我读它必须有足够的做我想做的。
当用户配置的url与我默认放在web引用属性中的url相同时,一切正常。但是,当用户输入自己的网址,一个例外是只要服务方法称为抛出(在这里验证):
Unable to cast object of type 'System.Xml.XmlNode[]' to type 'HubServiceAuthenticateOut'
和
There is an error in XML document (2, 649)
我捕捉使用Wireshark数据包,相比这两种情况:内容完全相同,只是名称空间随url更改。 XML是完全正确的(服务器端,它是一个PHP应用程序,用于生成wsdl和处理调用的zend soap autodiscover)。
有没有人已经遇到过这种问题?有没有更好的方法来改变服务端点比url属性?
当我看着我的Reference.cs,我看到的命名空间硬编码,这样的:
[System.Web.Services.WebServiceBindingAttribute(Name="HubServiceBinding", Namespace="https://localhost/myapp/HubService.php")]
即使url属性是动态的,可以把它扯上关系?
谢谢!