C#/。NET - 根据web.config中的设置配置服务器与localhost

时间:2015-09-23 14:52:07

标签: c# asp.net web-config

我有一个C#/ ASP.NET项目,它在handlers的{​​{1}}部分中使用了一些modulessystem.webServer来获取必要的单点登录内容要在生产服务器上使用,但不需要(也不需要)在localhost上使用(我只是在localhost上获取空白屏幕而不是我的项目)。

简单的解决方案是拥有两个web.config个文件,但大多数设置都是相同的,并且必须在两个web.config文件中更新更改,因此我更喜欢只有一个。{1}}文件。解决方法是在localhost上开发时注释web.config中的相应行,并在部署时取消注释 - 但这不是一个很好的解决方案。

与localhost上的另一个数据库类似的问题。

是否有一种简单的方法可以让一个web.config并在web.config文件中执行类似if (!isLocalhost) use handler/module的操作?我希望在web.configpreConditionmodules设置的类似参数中添加某些内容,但没有找到合适的内容。

另一个想法可能是在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 ,但这似乎不可能 - 除非你有一个好主意。

那么:针对这种情况的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

我的本​​地配置文件不在正常的网站目录下,我取得了很大的成功。因此,部署您可以吹走网站目录,而不必记住保留一个文件。如下所示:

<connectionStrings configSource="..\ServerConfigs\ConnectionStrings.config"/>

我还将所有应用程序设置(您所在的环境除外)移动到数据库中。请参阅我的博客文章here有两个主要好处。首先,您可以将生产数据库向下移动到开发,而不需要更改任何内容,因为所有环境的所有值都在1个表中。第二个好处是可以轻松放入隐藏的网页,您可以访问该网页并查看网站的所有设置。