asp.net - 如何在 IIS Express 下启用区分大小写?

标签 asp.net url-routing case-sensitive iis-express

如果使用 IIS Express,我应该如何启用区分大小写的请求处理? IIS Express 中是否有设置?或者 URL 重写规则可以做到这一点吗?或者可能是包罗万象的 HTTP 处理程序来进行案例检查?

目标是在部署到 IIS 和 S3(其中 S3 区分大小写)之前,能够在本地捕获与静态文件相关的大小写不一致。

谢谢

最佳答案

IIS 区分大小写...
...但不适用于文件。
IIS 不区分大小写是用词不当,不区分大小写的是 Windows 文件系统,而不是 IIS。如果 URL 包含文件路径,则 IIS 会询问 Windows 该文件是否存在,并且操作系统会在不考虑字母大小写的情况下做出响应。无法在 Windows 中“启用”文件名区分大小写。
但是对于真实文件路径以外的其他文件,IIS 是 100% 区分大小写的。 URL 字符的大小写原封不动地传递到 IIS 管道。是否存在区分大小写取决于 Web 应用程序。但好的做法是说你不想要 /page1不同于 /PAGE1 .
ASP.NET 对查询字符串变量名称不区分大小写。再说一次,这不是 IIS。不区分大小写的是应用程序 (ASP.NET)。
概括
静态文件路径不区分大小写(由于 Windows 操作系统,而不是 IIS):

http://example.com/sUbdiRectoRy/FILe.aspx
但是,不参与文件路径的 URL 部分是区分大小写的(下面的 file.aspx 之后的所有内容除了“x”参数,因为 .aspx 是 ASP.NET 资源):
http://example.com/sUbdiRectoRy/FILe.aspx/Extra/Tail?x="query parameter"
如果应用程序区分大小写,则通过重写、HttpModules 等动态生成的 URL 也是区分大小写的。这通常不是最佳实践,因为这两个 URL 会引用两个单独的网页:
http://example.com/2012/01/23/blog-article
http://example.com/2012/01/23/BLOG-ARTICLE

关于asp.net - 如何在 IIS Express 下启用区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811021/

相关文章:

asp.net - RegisterRoutes方法会降低性能吗?

C# ASP.NET - 一个可以从任何函数访问的变量,并且对任何用户都不同?

routes - yii:国际化(i18n)和动态 url 管理器

ios - 为什么 iOS UDID 区分大小写?

django - 有没有办法在 Django 中进行不区分大小写的 IN 查询?

mercurial - 如何使 hg 忽略过滤器不区分大小写

asp.net - 即使项目中没有错误,Xamarin 应用程序也不会部署

c# - Div onload函数和嵌入服务器代码c#

angularjs - 如何让 AngularJS 使用 ServiceStack FallbackRoute 属性来支持 HTML5 pushstate Urls?

angularjs - CORS错误-获取$ compile错误和XMLHttpRequest无法加载错误?