Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Web引用-动态URL错误_C#_Web Services_Soap_Web Reference - Fatal编程技术网

C#Web引用-动态URL错误

C#Web引用-动态URL错误,c#,web-services,soap,web-reference,C#,Web Services,Soap,Web Reference,我正在编写一个使用SOAP服务发送数据的应用程序。用户可以在应用程序设置中更改url端点 我是这样做的: public HubHandler() { this.urlHub = Settings.Default.UrlWebService; //some code this.connect(); } private void connect() { this.service = new HubService(); this.service.Proxy

我正在编写一个使用SOAP服务发送数据的应用程序。用户可以在应用程序设置中更改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相同时,一切正常。但是,当用户输入自己的URL时,一旦调用服务方法就会引发异常(此处为authenticate):

我用Wireshark捕获了数据包,并比较了两种情况:内容完全相同,只是名称空间随url而变化。 XML是完全正确的(服务器端,它是一个带有zend soap autodiscover的php应用程序,可生成wsdl并处理调用)

有没有人已经遇到过这种问题?有没有比url属性更好的方法来更改服务端点

当我查看我的Reference.cs时,我看到名称空间是硬编码的,如下所示:

[System.Web.Services.WebServiceBindingAttribute(Name="HubServiceBinding", Namespace="https://localhost/myapp/HubService.php")]
即使url属性是动态的,它也可能是相关的吗


谢谢

最后,要做我想做的事情似乎是不可能的。问题是框架解析Web服务响应并检查名称空间

看看这篇文章:

我们可以定义3种情况:

  • 只有一个端点,没有问题
  • 端点数量有限:每个域1个Web引用。阅读这个有趣的答案,可以很好地了解如何以编程方式进行管理:
  • 端点数量无限:无法使用visual studio webreferences处理它
  • There is an error in XML document (2, 649)
    
    [System.Web.Services.WebServiceBindingAttribute(Name="HubServiceBinding", Namespace="https://localhost/myapp/HubService.php")]