我们通过检查global.asax中的主机名并基于该主机名设置一些应用程序范围的设置,解决了db连接字符串问题。源代码管理中有一个config.xml,其中列出了各种主机名及其应获得的设置。
然而,我们还没有找到一个优雅的web服务解决方案。到目前为止,我们所做的是将对所有环境的引用添加到项目中,并将几个using语句添加到使用服务的文件中。当我们签出项目时,我们会取消对所处环境的适当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服务进行数据访问,我希望这不是一个独特的问题,而且已经有人提出了解决方案。
还是我们把整个事情搞错了?
编辑: