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