在不同环境中使用Web服务

时间:2009-10-15 14:11:13

标签: asp.net web-services environment-variables

我们有一系列生活在不同环境(dev / qa / staging / production)的Web服务,这些服务可以从Web应用程序,网站和其他服务访问。还有一些不同的服务区域。因此,对于生产,我们在四个不同的盒子上提供服务。

我们通过检查global.asax中的主机名并根据该主机名设置一些应用程序范围设置来征服数据库连接字符串问题。源控件中有一个config.xml,列出了各种主机名以及它们应该获得的设置。

但是,我们还没有找到一个优雅的Web服务解决方案。到目前为止我们所做的是添加对项目的所有环境的引用,并向使用这些服务的文件添加几个using语句。当我们签出项目时,我们会取消对我们所处环境的适当使用声明进行取消注释。

它看起来像这样:

// Development
// using com.tracking-services.dev
// using com.upload-services.dev

// QA
// using com.tracking-services.qa
// using com.upload-services.qa

// Production
// using com.tracking-services.www
// using com.upload-services.www

显然,随着我们越来越多地使用Web服务,这种技术将变得越来越繁重。

我已考虑将名称空间放入web.config.dev,web.config.qa等,并在global.asax中的应用程序启动时将它们交换出来。我认为这不会起作用,因为在运行global.asax时,编译已经完成,web.config更改不会产生太大影响。

由于“最佳实践”包括使用Web服务进行数据访问,我希望这不是一个独特的问题,并且有人已经提出了解决方案。

或者我们是否错过了这一切?

编辑: 这些是asmx Web服务。我可以找到web.config中没有引用的url。

1 个答案:

答案 0 :(得分:1)

创建一个引用并使用配置根据需要切换目标URL。没理由根本没有单独的代理。