"You do not have permission to view this directory or page." 仅在 Azure 上切换到生产环境后出错

"You do not have permission to view this directory or page." Error only after swap into production on Azure

我在 Azure 上有一个多租户 ASP.NET MVC 5 网络应用 运行。在成功部署到暂存后,我使用暂存槽交换到生产环境。当我交换生产站点和暂存站点时,会显示消息

You do not have permission to view this directory or page.

如果我在 kudu(或 ftp)中打开 web.config 并保存为 没有更改 ,则消息会出现并且网站会正常加载。如果我在分期执行此操作,情况也是如此。交换期间发生了某些事情,导致两个 Web 应用程序无法正确加载。当消息出现时,我可以导航到 html 个文件,但任何 MVC 路由都会显示上面的权限消息。

我的设置注意事项

在交换之前,我会检查生产站点和暂存站点 运行 是否正确。

交换时,我将源设置为暂存,将目标设置为生产。没有警告,一个设置在两个插槽中具有相同的值,两个新的源设置将应用于目标插槽。一个是连接字符串,另一个是 AppSetting。

默认文档设置在web.config

其他适当的 web.config 设置已到位:

<modules runAllManagedModulesForAllRequests="true">

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

但是考虑到网站在我重新保存 web.config 后加载,我认为 web.config 设置没有任何问题。

此问题是在将构建更改为将视图预编译为单个 dll 后出现的。在站点根目录 PrecompiledApp.config

上生成了一个新的配置文件

新构建配置设置:

/p:PrecompileBeforePublish=true /p:UseMerge=true /p:SingleAssemblyName=AppCode

但同样,在初始构建和部署之后暂存加载。只有在交换之后才会出现问题。再一次,如果我打开 web.config 并保存而不做任何更改,问题就会得到解决。

难道是App Domain被关闭没有重启?我在这里错过了什么?

Application Insights 模块导致此问题。唯一的修复方法是从您的 Web 应用程序中完全删除应用程序洞察。