1

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

您无权查看此目录或页面。

如果我在 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 正在关闭但没有重新启动?我在这里想念什么?

4

1 回答 1

0

应用程序洞察模块会导致这种情况。唯一的解决方法是从您的 Web 应用程序中完全删除应用程序洞察力。

于 2018-01-23T21:24:36.160 回答