2

我正在将 ASP.NET 2.0 (3.5 SP1) 应用程序迁移到 .NET 4.0。它利用 SQL Server Reporting Services 2008R2 Web 服务。这个网络服务是一个老式的 asmx 肥皂网络服务。

那时我添加了一个我设置为动态的网络参考,并在我<applicationSettings>web.config.

迁移到 Visual Studio 2010 和 .Net 4.0 后,我不得不重新添加 Web 参考。.Net 2.0 Web 引用对话框按原样添加代理类。但现在它在文件夹中包含了settings.settings我项目的一个Properties文件。我可以忍受,但settings.settings编译后文件不可用。看起来它已经编译到dll中了。

即使将配置粘贴到settings.settingsweb.config的文件中并删除settings.settings文件也无济于事。我收到一个命名空间编译错误,因为 vs 生成的代理类期望settings.settings...

那么如何包含我的 Web 参考并使其在配置文件中可调整?

要么告诉网络参考编辑器使用web.config,也许?或者将settings.settings文件作为 xml 提供,以便在部署时更改它?

或者任何其他帮助也会很棒......

4

1 回答 1

2

这可能对您有帮助,也可能无济于事,但这是我们解决此问题的 Web 服务方法。我们为给定的 Web 服务创建一个包装类,并且每次实例化代理类时,我们都会在引用该<appSettings />节点的代码中设置 URL。

例如

public class MyWebService
{
  private static readonly string _serviceUrl = ConfigurationManager.AppSettings["serviceUrl"] ?? "http://someserviceurl.com/service.asmx";

  public MyWebService()
  {
  }

  private WebServiceClient GetClient()
  {
    WebServiceClient client = new WebServiceClient();
    client.Url = _serviceUrl;
    return client;
  }

  private void Method1()
  {
    var client = GetClient();
    // do stuff
  }
}
于 2012-11-28T17:37:42.067 回答