使用 ASP.NET MVC3,如何让 IIS 不在区分大小写的路由上重定向 302?
例如,我在 IIS 中的站点下创建了一个名为“Admin”的应用程序文件夹。javascript(有数百个文件,没有微不足道的变化,然后当生成或编写新代码时,我们必须在所有路由上手动强制执行大小写?我认为这太过分了)和一些手写链接都指向/admin/ControllerName/
或/admin/controllername/
已经,所以当 IIS 看到这个时,它会发出一个 302 到/Admin/ControllerName/
. 显然(我测试确认)只是改变大小写可以防止 302。
每个图像、javascript include 等都会对 IIS 造成两次点击。
我怎样才能减少流量,让 IIS 继续进行,不区分大小写地重新路由我,这样我们就可以停止所有愚蠢的 302。或者这是不可能的,我应该在我们编写的所有代码中永远强制执行每个潜在的 URL?还是我只需要接受它并接受 302?
我猜您正在使用 WS-Federation?或者至少使用 WSFederationAuthenticationModule 和/或 SessionAuthenticationModule?这两个模块都会执行重定向以匹配您的应用程序的大小写,因为它在 IIS 中的任何时候都无法对您进行身份验证或验证您是否有权获取所请求的资源。我看不出有什么办法可以阻止它这样做,即使你可以,你也可能无法通过使用
/admin
.这样做的原因是 cookie 中列出的路径区分大小写,并且由于与 WS-Federation 相关的所有内容都是通过 cookie 完成的,因此大小写必须匹配。如果显示您已通过身份验证的 cookie 是为其创建的
/Admin
,然后您尝试访问/admin
,它会认为您未通过身份验证。一种可能的解决方法是将管理目录设置为 IIS 中的单独应用程序,并将其配置为不使用 FAM 或 SAM。但是,根据目录的名称,我猜这对您来说不是一个可行的选择,因为您会失去对该目录的身份验证。
嗯,我认为 IIS不区分大小写。
您确定这里没有任何您可以禁用的 URL 重写吗?
干杯