c# /.基于web.config中的设置,服务器和本地主机的.NET配置

本文关键字:主机 配置 NET 服务器 设置 基于 web config | 更新日期: 2023-09-27 18:14:06

我有一个c#/ASP。. NET项目,在web.configsystem.webServer部分使用一些handlersmodules用于单点登录的东西,这些东西必须在生产服务器上使用,但不需要(也不想要)在本地主机上使用(我只是得到空白屏幕而不是我在本地主机上的项目)。

简单的解决方案是有两个web.config文件,但大多数设置是相同的,更改必须在两个web.config文件中更新,所以我宁愿只有一个。一个解决方法是在本地主机上开发时注释web.config中的相应行,在部署时取消注释-但这并不是一个很好的解决方案。

类似的问题,在本地主机上的数据库不同。

是否有一个简单的方法,有一个web.config,并做if (!isLocalhost) use handler/module内的web.config文件?我希望preConditionmodulesfilter设置的类似参数,但没有找到合适的

的另一个想法可以有app.settings——你可以一行像<add key="myTrigger" value="true" />一部分,使控制器的行动依赖myTrigger的设置通过测试System.Web.Configuration.WebConfigurationManager.AppSettings["myTrigger"] == "true"——这可能是适合做控制器依赖服务器与本地主机上运行,但对于设置像connectionStrings这不会帮助太多——除非有办法设置像<whateversetting ... when appsetting.myTrigger == "true">(但我怀疑这样的存在)。

另一个想法是使用外部配置文件,例如<connectionStrings configSource="some.config" />,它只是有web.config的不同部分-所以一个本地一些。配置和服务器端的一个。

我更喜欢一个all-in-one web。config但这似乎是不可能的-除非你有一个伟大的想法。

那么:这种情况下的最佳实践是什么?

c# /.基于web.config中的设置,服务器和本地主机的.NET配置

我已经取得了很好的成功,有一个本地配置文件,不是在正常的网站目录下。所以做部署,你可以吹走网站目录,而不必记得保留一个文件。比如:

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

我还将所有应用程序设置(除了您所处的环境)移动到数据库中。这里有两个关键的好处。首先,您可以将生产数据库移到开发数据库,而不需要更改任何内容,因为所有环境的所有值都在一个表中。第二个好处是,它很容易放置一个隐藏的网页,你可以去查看所有的设置为一个网站。