0

我正在使用 app.config 来区分远程 Web 应用程序的“预览”和“生产”Web 服务 URL。WSDL 在预览版和生产版中是相同的。但是,当我使用与 Visual Studio 在 Web References 文件夹中的 URL 不同的 URL 时,我收到以下错误:There is an error in XML document (2, 691).

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

MyNamespace.MyType.MyService ws = new MyNamespace.MyType.MyService()
{
    Url = System.Configuration.ConfigurationManager.AppSettings["url"]
};

我做了两个 WSDL 之间的差异,唯一的区别是元素上的targetNamespace属性xsd:schemalocation属性。soap:address

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

4

1 回答 1

2

问题是预览和生产应用程序托管在两个单独的服务器上。将它们托管在同一台服务器(或至少是 web 服务)上允许命名空间保持不变,唯一的区别是 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/预览/myapp/webservice.aspx

如果这是不可能的,我知道的唯一其他解决方案是有两个网络参考,一个用于生产,另一个用于预览。缺点是您的命名空间(以及您的类型)会有所不同,并且大多数代码都需要复制。

于 2013-01-08T21:11:09.257 回答