我在部署带有预编译视图的 ASP.NET MVC 应用程序时遇到问题。直到现在我还没有预编译视图,并且应用程序已经完美运行了多年。如果我对它们进行预编译,该站点将按照您的预期在第一次启动时运行。但是,如果我从 IIS 重新启动它,我会开始收到 404.0 错误。有趣的是:如果我在 IIS 中更改应用程序的非必要配置,IIS 会自行重新启动应用程序,它就会变得生动起来。如果它被回收或重新启动,那么它会回到 404.0s。
我注意到错误页面描述了不正确的物理路径。在下面的屏幕截图中,物理路径是 C:\wwwsites\workpal\settings。实际上,“设置”是控制器名称,并且是路径中的文件夹:C:\wwwsites\workpal\views\settings,其中包含 index.cshtml。另外,这里应该使用 StaticFile 吗?我是新手,但对我来说,IIS 似乎不知道如何解析 URL。
- 应用程序正在运行 .NET 4.7.2
- IIS 8.5
- 应用程序已经工作了多年,没有预编译的视图,没有问题。我们之前使用过 .NET 4.5,但我怀疑是不是这个原因。我得到与 4.5 相同的结果。
- 唯一的变化是在 VS 发布设置中打开预编译视图。我已经尝试了每个“高级预编译设置”配置 - 结果相同。
- 具有预编译视图的应用程序在首次启动时工作,当 IIS 检测到应用程序目录中的更改或当我更改 IIS 中的非必要应用程序设置时。
- 应用程序在回收或手动重新启动时不起作用。
- 我试过新鲜的 AppPool 和新鲜的网站 - 无济于事。
- 在两台不相关的服务器(物理机)上测试。