asp.net-mvc - asp.net mvc 路由与 IIS7 中的物理路径冲突

标签 asp.net-mvc iis web-config

我正在搞乱 Controller 组织,但遇到了问题。

如果我有以下物理结构

/Home/HomeController.cs
/Home/Index.aspx
/Home/About.aspx

我请求 URI:

/Home/Index

我收到 403 Directory Listing Denied :(

(我使用自定义 IControllerFactory 和 IViewEngine 来查看此非默认路径)

为什么会发生这种情况? (我知道 403 是因为它击中了 /Home 文件夹,但为什么它击中了该文件夹?)

为什么UrlRoutingModule不重写路由并让 Controller 接收请求?

Application_BeginRequest 触发,但随后它似乎将控制权传递回 IIS 以尝试从文件系统提供服务。

重写前是否存在默认为物理路径的UrlRoutingModule?

有办法实现这个功能吗?

注意请不要建议重新安置我的 Controller 等。我知道这是一个显而易见的选择,但这不是问题;)

在集成模式下使用 IIS7

谢谢

最佳答案

因为路由抽象只会路由磁盘上没有等效文件的请求。

除了重命名文件夹结构之外,您别无选择。

-- 编辑 不,实际上您可以通过在 RouteCollection 上设置 RouteExistingFiles 属性来禁用该“功能”。

关于asp.net-mvc - asp.net mvc 路由与 IIS7 中的物理路径冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873685/

相关文章:

asp.net - IIS/ASP/ASP.net : How to structure web-site to expose mobile version

asp.net - 访问路径 'c:\inetpub\wwwroot\myapp\App_Data'被拒绝

c# - 执行 Ajax 时出现 500 内部服务器错误

javascript - 在数据库问题中保存模式消息

ASP.NET Windows 身份验证模拟问题

带有空格的 asp.net web.config 位置路径

iis - 加载配置文件 : Failed to start monitoring changes to '\\share' 时出错

azure - 是否可以从已部署的 Web 角色获取 web.config?

javascript - 上传时使用标签 <input type = "file"> 读取文件名并将其重命名为 mvc + angularjs

asp.net-mvc - NET Core 3.1 MVC 授权/身份验证,使用在单独的 Net Core 3.1 Web Api 中从外部获取的 token (JWT)