带有 FriendlyUrls 和 debug="false" 的 ASP.NET WebForms 项目在生产中引发 404

Posted

技术标签:

【中文标题】带有 FriendlyUrls 和 debug="false" 的 ASP.NET WebForms 项目在生产中引发 404【英文标题】:ASP.NET WebForms Project with FriendlyUrls and debug="false" throws 404s in production 【发布时间】:2014-05-03 18:13:46 【问题描述】:

我有一个使用 VS 2013 构建的 ASP.NET 4.5 Web 应用程序。当我在 web.config 文件中将 debug 设置为 false 时,我的 aspx 页面在生产中抛出 404(IIS 8.5)。我使用 VS 发布选项发布。

这是一个已知原因或解决方法的问题吗?


编辑:

我创建了一个没有引用的全新空 ASP.NET 应用程序,并使用 debug=false 上传它,它加载正确。然后我继续添加我的其他应用程序拥有的 Nuget 包和其他设置,直到我点击它。这是 FriendlyUrls。

添加 FriendlyUrls 包后,它仍然可以正常工作。直到我真正启用它之后,通过将RouteConfig.RegisterRoutes(RouteTable.Routes); 添加到 Global.asax 文件中,它给我带来了 404 错误。然后我设置debug=true,果然加载正常。

其他人能否在 IIS 8.5 中重现此问题,或者此问题特定于我的托管环境?

编辑 2:

我刚刚在 Windows Azure 上打开了一个测试网站,启用了 FriendlyUrls,并且 debug=false,它就像一个魅力。这被证明是一个 RACKSPACE-Cloud-Site-only 问题,除非其他 IIS 版本的行为不同(Azure 网站当前在哪个版本上运行?)。

但核心问题是什么?在某些情况下会与 debug=false 冲突的 FriendlyUrls 的底层配置是什么?主要是,这种情况或 IIS 设置可能是什么(所以我可以让 Rackspace 注意到这一点)?

更新:

Rackspace 认为这是权限问题。随着我获得更多信息,将会有更多更新。

【问题讨论】:

所以您的网站与 debug="true" 完美配合? @citronas 是的 - 调试设置为 true 时工作正常。 没有多大意义。 404 是找不到页面,这表明部署可能出错了。您如何部署网站? 加载 fiddler 并确保所有请求看起来都正确。 @OwenDavies 是的,共享托管环境(在他们的术语中称为云站点)。它最终成为包含应用程序文件的内容文件夹的权限问题。 【参考方案1】:

可能是请求不是由 isappi 模块处理,而是由 Statick 处理程序处理,因为它没有指向真实文件,请尝试查看 IIS 中的 HandlerMapping,并确保该处理程序没有映射扩展对 Isapi 模块的请求

【讨论】:

有趣的答案...您是否介意看看我的这个问题,它在一种情况下有效,而在另一种情况下无效:***.com/questions/34080141/…

以上是关于带有 FriendlyUrls 和 debug="false" 的 ASP.NET WebForms 项目在生产中引发 404的主要内容,如果未能解决你的问题,请参考以下文章

命名空间“Microsoft.AspNet”中不存在类型或命名空间名称“FriendlyUrls”

Webform中启用Microsoft.AspNet.FriendlyUrls引起post请求失效

ASP.NET 关闭 FriendlyURLs mobile.master 页面

添加 FriendlyUrls 时,jQuery ajax 调用不适用于 ASP.Net Web 窗体

是否可以使用 ASP.NET FriendlyUrls 摆脱“索引”?

AEM6从带有-debug -nofork选项的控制台开始