我知道asp.net核心有一个非常灵活的新配置系统,这很棒.但是我喜欢从.net 4.x开始的基于web.config的配置系统.例如,可以将注释放在web.config文件中,因为它是一个xml文件.对我而言,值得坚持使用xml,而不是采用闪亮的新json方法.[ 更新:我现在明白json方法也支持文件中的注释.]
因此,如果我有一个针对完整框架的Asp.Net核心Web项目,我似乎应该可以使用基于web.config的System.Configuration.ConfigurationManager.AppSettings[key]方法来获取设置.
但是当我尝试时,该值总是返回null(至少在使用VS2015的IIS Express时).
它应该工作正常吗?关于我可能会看到什么的任何想法?
Web.config文件
<configuration>
<appSettings>
<add key="SomeSetting" value="true"/>
</appSettings>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
代码访问设置:
string key = "SomeSetting";
string setting = ConfigurationManager.AppSettings[key];
if (setting == null)
throw new Exception("The required configuration key " + key + " is missing. ");
Run Code Online (Sandbox Code Playgroud)
更新
经过更多的研究,我现在明白为什么它不起作用,但我还没有找到解决方法.根本原因似乎是ConfigurationManager在不同的文件中而不是在web.config中查找配置信息.
这可以通过查看AppDomain.CurrentDomain.SetupInformation.ConfigurationFile财产来看出.在我的情况下,而不是指向website_folder\web.config它,而是指向website_folder\bin\Debug\net461\win7-x64\wwwGiftOasisResponsive.exe.Configwebsite_folder是包含我的网站的文件夹的路径.
文档和intellisense说AppDomain.CurrentDomain.SetupInformation.ConfigurationFile是一个可设置的属性,但当我尝试时,我发现它设置它不会改变它的值.很奇怪.
所以,虽然我现在看到问题是什么,但我似乎无法找到解决问题的方法.