我有一个引用Web服务的DLL。
它放入app.config的块是(我已经更改了名称,但你会得到这个想法):
<applicationSettings>
<DLLName.My.MySettings>
<setting name="DLLName_WebReferenceName_ASMXName"
serializeAs="String">
<value>http://URL/Filename.asmx</value>
</setting>
</DLLName.My.MySettings>
</applicationSettings>
我的网站引用此DLL。
问题是,如何添加到web.config以覆盖上述设置(另外,我只是将app.config放在BIN目录中)?
我需要能够覆盖生产服务器上的webservice的URL,因为它无法访问app.config中指定的URL(这是我们不会涉及的另一个问题)。
答案 0 :(得分:7)
在configSections中创建一个名为applicationSettings的新sectionGroup,并将app.config配置粘贴到web.config中,如下所示,然后您可以覆盖app.config设置。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Playground.ConfigurationOverride.DataAccess.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Playground.ConfigurationOverride.DataAccess.Properties.Settings>
<setting name="MySetting" serializeAs="String">
<value>Setting in DataAccess</value>
</setting>
</Playground.ConfigurationOverride.DataAccess.Properties.Settings>
</applicationSettings>
</configuration>
答案 1 :(得分:1)
Web.config。 Web.config是IIS的必需配置文件,用于配置它在Kestrel之前作为反向代理的行为。如果要在IIS上托管它,则必须维护一个web.config。
对于与IIS不相关的其他所有内容,请使用AppSetting.json。 AppSetting.json用于Asp.Net Core托管。 ASP.NET Core使用“ ASPNETCORE_ENVIRONMENT”环境变量来确定当前环境。默认情况下,如果您在不设置此值的情况下运行应用程序,它将自动默认为生产环境并使用“ AppSetting.production.json”文件。通过Visual Studio调试时,它将环境设置为“开发”,因此它使用“ AppSetting.json”。请访问此网站以了解如何在Windows上设置托管环境变量。
App.config是.NET使用的另一个配置文件,主要用于Windows窗体,Windows服务,控制台应用程序和WPF应用程序。当您通过控制台应用程序app.config启动Asp.Net Core托管时。
配置文件的选择取决于您为服务选择的托管环境。如果使用IIS承载服务,请使用Web.config文件。如果使用任何其他托管环境,请使用App.config文件。 参见Configuring Services Using Configuration Files documentation 并查看Configuration in ASP.NET Core.