C# Azure AD签名密钥滚动

C# Azure AD签名密钥滚动,c#,asp.net-mvc,azure,active-directory,azure-active-directory,C#,Asp.net Mvc,Azure,Active Directory,Azure Active Directory,Azure登录密钥将于2015年8月15日到期。我的一些应用程序未设置为自动处理此问题。我想我有一个解决方案,它在Global.asax中使用了以下函数 protected void RefreshValidationSettings() { string configPath = AppDomain.CurrentDomain.BaseDirectory + "\\" + "Web.config"; string metadataAddress = ConfigurationM

Azure登录密钥将于2015年8月15日到期。我的一些应用程序未设置为自动处理此问题。我想我有一个解决方案,它在Global.asax中使用了以下函数

protected void RefreshValidationSettings()
{
    string configPath = AppDomain.CurrentDomain.BaseDirectory + "\\" + "Web.config";
    string metadataAddress = ConfigurationManager.AppSettings["ida:FederationMetadataLocation"];
    ValidatingIssuerNameRegistry.WriteToConfig(metadataAddress, configPath);
}
这在我的桌面上的调试中起作用,新密钥将下载并写入我的web.config

当我上传网站到azure时,尽管我的访问被拒绝

对路径“E:\sitesroot\0\Web.config”的访问被拒绝

ASP.NET无权访问请求的资源。考虑授予对ASP.NET请求标识的资源访问权限。ASP.NET有一个基本进程标识(通常是IIS 5上的{MACHINE}\ASPNET或IIS 6和IIS 7上的网络服务,以及IIS 7.5上配置的应用程序池标识),在应用程序未模拟时使用。如果应用程序是通过模拟的,则标识将是匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的请求用户

要授予ASP.NET对文件的访问权限,请在文件资源管理器中右键单击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加相应的用户或组。突出显示ASP.NET帐户,并选中所需访问权限的复选框


奇怪的是,这是一个建议,因为我的这篇博文详细讨论了这个问题。也许这可以帮助你

您在中指出的指南仅适用于您可以在运行时修改web.Config的应用程序

Azure Web应用不属于此类别。除了您面临的权限问题之外,Azure Web应用程序不保证底层VM的持久性。这意味着对web.Config的任何运行时更改都可以在任何时候撤消

为了8月15日的展期,您可以在本地运行应用程序,只需更新应用程序的签入web.Config和Azure web App设置。鉴于元数据已经具有当前密钥和Azure AD将在15日滚动到的密钥,因此生成的web.Config/settings将覆盖此特定事件


但是,为了正确支持自动滚动,您最好将应用程序迁移到较新的堆栈,例如Owin中间件。

您可以尝试
WebConfiguration Manager吗。OpenWebConfiguration(null)
将应用程序中的根
web.config
文件作为
配置
对象获取<代码>配置对象具有
文件路径
属性这不是与在同一帐户下运行时存在的问题相同吗?抱歉,我应该提到我尝试过,但没有成功。我认为问题在于使用网络服务帐户的示例。Azure似乎正在使用ASP.NET帐户。我不知道我应该在它建议创建的文件中输入什么帐户。有什么想法吗?所以我在批处理文件中犯了一个错误,现在可以了。谢谢