C# 如何从外部文件读取XML appSettings?
有很多类似的问题,我已经看了每一个我能找到的,但没有用 我将Google+身份验证的API密钥存储在解决方案外部的.config文件中(与解决方案文件夹处于同一级别) 我正在尝试读取Startup.Auth.cs中的值,如下所示:C# 如何从外部文件读取XML appSettings?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,有很多类似的问题,我已经看了每一个我能找到的,但没有用 我将Google+身份验证的API密钥存储在解决方案外部的.config文件中(与解决方案文件夹处于同一级别) 我正在尝试读取Startup.Auth.cs中的值,如下所示: public void ConfigureAuth(IAppBuilder app) { app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() { Cli
public void ConfigureAuth(IAppBuilder app)
{
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = WebConfigurationManager.AppSettings.Get("GoogleClientId"),
ClientSecret = WebConfigurationManager.AppSettings.Get("GoogleClientSecret")
});
}
根Web.config:
<appSettings file="..\Secrets.config"> <!-- Path is correct, relative to Web.config -->
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Secrets.config:
<configuration>
<appSettings>
<add key="GoogleClientId" value="shh" />
<add key="GoogleClientSecret" value="shh" />
</appSettings>
</configuration>
在我的解决方案之外的.config文件中(与解决方案文件夹处于同一级别)
IIS应用程序完全不知道其虚拟应用程序文件夹之外的任何文件夹。在web应用程序的上下文中没有“与解决方案文件处于同一级别”,因为解决方案文件没有与之一起部署
如果要将appSettings置于应用程序文件夹之外,则您唯一的内置选项是根web.config
文件或machine.config
文件,这两个文件都是计算机的全局文件(但特定于您运行的.NET framework版本)。看
但是为了记录在案,如果您将应用程序设置保存在应用程序的web.config文件中,那么从长远来看最容易管理。最终,您将需要更改/添加一个新的web服务器,并且您可能会有一段时间绞尽脑汁,试图弄清楚,如果需要将这些设置放置在虚拟应用程序文件夹之外,那么在该时间到来时,为什么这些设置不再起作用
从Secrets.config
Secrets.config:
<configuration>
<appSettings>
<add key="GoogleClientId" value="shh" />
<add key="GoogleClientSecret" value="shh" />
</appSettings>
</configuration>
官方MS文档
您是否尝试验证secrets.config是否在生成后复制
通过右键单击文件并查看属性,验证文件的生成操作是否设置为始终复制。我遵循guide.Yup的建议,在同一级别上也可以使用它。我不想在我的存储库中公开敏感信息,这就是为什么我试图按照Rick Anderson的建议做,并将其完全置于解决方案之外。这样做不行。只是为了解决问题。当他们处于同一水平时,它是否起作用。我只是想排除它能起作用的可能性。我在生产中也有相同的文件,但在我的例子中,这些文件都在同一根上。是的,如果它们在同一级别上,它就可以工作。奇怪的是,教程可能会出错。请记住,如果找不到文件,它就不起作用。尝试小步骤。转到一个文件夹,然后再试一次,依此类推。正在确认文件路径。嗯,是的,只有一个步骤可以完成,这就是最初的步骤。