0

我在 ASP.NET 2.0 网站项目中有一个 Web 服务参考。我希望能够在服务的暂存版本和生产版本之间切换,而无需更改我的代码。

但是,我没有看到如何以干净的方式做到这一点。我知道我可以更改 web.config 以指向其他一些服务 URL,但是我的代码不是仍然硬编码到一个引用或另一个引用吗?

我看到了这篇文章,但是您如何编辑代理类?如果我在类上“转到定义”,它不会带我到任何我可以编辑的类,但它是对象浏览器...我是否需要运行 wsdl.exe 实用程序以便它生成代理为我上课,然后我可以编辑?

编辑#1:这是我用来实例化和调用服务的代码:

Dim service As New Swan.MagellanLeadSheetService()
Dim response As Swan.MagellanLeadSheetResponse = service.Foo(stuffToSendToService)

编辑 #2:由于 web.config 已经在 appSettings 区域中有 URL 端点地址,我可以在部署到生产时简单地编辑该设置以指向生产 URL 吗?就这么简单吗?我担心在 Staging 与 Production 的代理类之间可能会发生破坏性更改,但我认为应该在将任何更改部署到 Production 之前解决这些问题。

4

2 回答 2

2

以下文章介绍了如何通过更改引用属性、向 web.config 文件添加键并在应用程序代码中引用此键来使 Web 服务引用动态化:

文章链接

基本上,您将拥有 2 个版本的 web.config 文件,生产和暂存,并定义了不同的 URL。而代码将指向一个唯一的位置。

更新:

现在,在下一行之前,您必须根据 web.config 中的内容更改 service.URL。

Dim response As Swan.MagellanLeadSheetResponse = service.Foo(stuffToSendToService)
于 2012-10-09T22:39:06.280 回答
1

首先,这里是一些如何为您的项目添加 Web 引用的信息:

如何:添加和删除 Web 引用

然后,您的 Web 服务类(派生自 的代理类SoapHttpClientProtocol)的实例必须具有一个名为 url 的属性,您可以使用该属性在运行时从暂存或生产切换到您的 asmx。

CountryService service = new CountryService();
service.Url = "http://foo/bar.asmx";

更多信息:WebClientProtocol.Url 属性

于 2012-10-09T22:02:14.020 回答