我有一个C#/ ASP.NET项目,它在handlers
的{{1}}部分中使用了一些modules
和system.webServer
来获取必要的单点登录内容要在生产服务器上使用,但不需要(也不需要)在localhost上使用(我只是在localhost上获取空白屏幕而不是我的项目)。
简单的解决方案是拥有两个web.config
个文件,但大多数设置都是相同的,并且必须在两个web.config
文件中更新更改,因此我更喜欢只有一个。{1}}文件。解决方法是在localhost上开发时注释web.config
中的相应行,并在部署时取消注释 - 但这不是一个很好的解决方案。
与localhost上的另一个数据库类似的问题。
是否有一种简单的方法可以让一个web.config
并在web.config
文件中执行类似if (!isLocalhost) use handler/module
的操作?我希望在web.config
或preCondition
和modules
设置的类似参数中添加某些内容,但没有找到合适的内容。
另一个想法可能是在filter
部分中添加某些内容 - 您可以使用app.settings
之类的行,并在控制器中根据<add key="myTrigger" value="true" />
的设置通过测试{进行操作{1}} - 这可能适合使控制器依赖于它是否在服务器上运行而不是本地主机,但对于像myTrigger
这样的设置,这不会有太多帮助 - 除非#&# 39;设置像System.Web.Configuration.WebConfigurationManager.AppSettings["myTrigger"] == "true"
这样的设置(但我怀疑存在类似的东西)。
另一个想法可能是使用外部配置文件,例如,connectionStrings
只有<whateversetting ... when appsetting.myTrigger == "true">
的不同部分 - 所以一个本地 some.config ,一个在服务器
我更喜欢拥有 all-in-one-web.config ,但这似乎不可能 - 除非你有一个好主意。
那么:针对这种情况的最佳做法是什么?
答案 0 :(得分:1)
我的本地配置文件不在正常的网站目录下,我取得了很大的成功。因此,部署您可以吹走网站目录,而不必记住保留一个文件。如下所示:
<connectionStrings configSource="..\ServerConfigs\ConnectionStrings.config"/>
我还将所有应用程序设置(您所在的环境除外)移动到数据库中。请参阅我的博客文章here有两个主要好处。首先,您可以将生产数据库向下移动到开发,而不需要更改任何内容,因为所有环境的所有值都在1个表中。第二个好处是可以轻松放入隐藏的网页,您可以访问该网页并查看网站的所有设置。