C# Webservice无法使用动态URL强制转换类型:XML文档中有错误(2691)

C# Webservice无法使用动态URL强制转换类型:XML文档中有错误(2691),c#,web-services,C#,Web Services,我使用app.config来区分远程web应用的“预览”和“生产”web服务URL。WSDL在预览和生产中都是相同的。但是,当我使用与Visual Studio在Web References文件夹中的URL不同的URL时,我会得到以下错误:XML文档(2691)中有一个错误。 下面是我如何设置代码以使用应用程序设置中定义的URL的示例: MyNamespace.MyType.MyService ws = new MyNamespace.MyType.MyService() { Url =

我使用app.config来区分远程web应用的“预览”和“生产”web服务URL。WSDL在预览和生产中都是相同的。但是,当我使用与Visual Studio在Web References文件夹中的URL不同的URL时,我会得到以下错误:
XML文档(2691)中有一个错误。

下面是我如何设置代码以使用应用程序设置中定义的URL的示例:

MyNamespace.MyType.MyService ws = new MyNamespace.MyType.MyService()
{
    Url = System.Configuration.ConfigurationManager.AppSettings["url"]
};
我在两个wsdl之间做了一个区别,唯一的区别是
xsd:schema
上的
targetNamespace
属性和
soap:address
元素上的
location
属性


我将URL行为设置为动态,我知道这是可能的,因为我以前在其他预览/生产应用程序中也这样做过。

问题是预览和生产应用程序托管在两个单独的服务器上。将它们托管在同一台服务器(或至少是webservice)上允许名称空间保持不变,唯一的区别是URL

Web服务以前看起来像这样:

  • 生产-http://production.example.com/myapp/webservice.aspx
  • 预览--http://preview.example.com/myapp/webservice.aspx
修复方法是像这样托管它:

  • 生产-http://example.com/production/myapp/webservice.aspx
  • 预览--http://example.com/preview/myapp/webservice.aspx
如果这是不可能的,我知道的唯一其他解决方案是有两个web引用,一个用于生产,另一个用于预览。缺点是您的名称空间(以及相应的类型)将不同,并且大多数代码都需要复制