由于在我的Azure网站部署中缺少AppId和AppSecret,我收到错误500.
如何在服务器上进行此设置?复制project.json文件似乎不够。
在开发机器上,AppId和AppSecret值为added to configuration through SecretManager。
更新:我现在已经在代码中硬编码了AppId和AppSecret值,就像它在以前版本中完成的那样,当然这仍然有效。最后,出于明显的安全原因,我仍然希望能够使用SecretManager(或类似的东西)在服务器上设置配置值。
答案 0 :(得分:2)
Azure Web Apps(网站)中的秘密存储为应用程序设置(和连接字符串)。
在您的代码中,您应该使用System.Configuration.ConfigurationManager.AppSettings
来访问它们。
您需要在web.config
文件中指定本地/调试设置。
<appSettings>
<add key="AppId" value="appid" />
</appSetting>
实际的机密信息在Azure管理门户中配置为APP SETTINGS
。
答案 1 :(得分:1)
这也令我感到不安。文件不清楚。但是,当我试图找出与连接字符串相同的问题时,我发现了解决方案:
https://stackoverflow.com/a/31341718/567524
(您可以使用那里的代码从Azure网站显示您的配置设置并对其进行调试,这就是我想出来的。)
基本上,MVC 6不再使用web.config,因此Azure不能以相同的方式工作。相反,Azure App Settings可通过Environment Variables:
获得// Get the environment variables (which is how we will access Azure App Settings)
configuration.AddEnvironmentVariables()
现在,Azure中的环境变量将映射到特定键。例如,Azure连接字符串设置变为:
// The Azure Connection string called "NAME" will be accessible here in MVC 6
Data:NAME:ConnectionString
这很好,因为默认的MVC 6模板使用相同的模式Data:NAME:ConnectionString。
此外,对于我们的应用设置,如果我们使用“:”分隔符,则环境变量会映射到预期的位置。
名为“身份验证:Facebook:AppId”的Azure应用设置将覆盖config.json值:
"Authentication": {
"Facebook": {
"AppId": "123MyId",...
关键是所有这些都是通过环境变量从Azure传递到MVC 6。 (这就是为什么AddEnvironmentVariables()是配置上的最后一次调用,以确保它优先于其他值。)