ASP.NET MVC中强制区分大小写的路由

ASP.NET MVC中强制区分大小写的路由,asp.net,asp.net-mvc,asp.net-routing,Asp.net,Asp.net Mvc,Asp.net Routing,这个问题在和上以类似但不完全相同的方式被问到(并且没有得到满意的解决) 来自linux世界,我想使用ASP.NET MVC,但避免使用相同但大小写不同的路由解析到同一页面。我不想强制所有路由都是100%小写的 e、 g.我希望/Home/somethingElse是一条有效的路由,/Home/somethingElse也是一条有效的路由,但不是/Home/somethingElse或/Home/somethingElse,因为家庭控制器中有两个名为somethingElse和的函数 我在Regi

这个问题在和上以类似但不完全相同的方式被问到(并且没有得到满意的解决)

来自linux世界,我想使用ASP.NET MVC,但避免使用相同但大小写不同的路由解析到同一页面。我不想强制所有路由都是100%小写的

e、 g.我希望
/Home/somethingElse
是一条有效的路由,
/Home/somethingElse
也是一条有效的路由,但不是
/Home/somethingElse
/Home/somethingElse
,因为
家庭控制器中有两个名为
somethingElse
的函数

我在
RegisterRoutes
函数中找不到任何方法来实现这一点,但可能我遗漏了一些明显的东西?通过向每个控制器函数添加代码,我可以很容易地回答这个问题,但我显然在试图避免这样做

最理想的解决方案是捕获特定路线的所有排列,然后301重定向与控制器功能不完全匹配的任何排列。

经过大量搜索后,我找不到任何方法。基本上,区分大小写和IIS/ASP.NET显然不能同时使用

我们现在用一点乱七八糟的方法来解决这个问题。代码已经在github上公开(MIT许可证),特别是

使用它非常简单:控制器类中的每个GET方法只需在开始时添加这一行:

Seo.SeoRedirect(this);
SEO重写类自动使用C#5.0的Caller Info属性来完成繁重的工作,使上面的代码严格地复制和粘贴

理想情况下,我希望找到一种方法将这行代码转换为属性。例如,在控制器方法前面加上
[CaseSensitive]
将自动产生与在该行中写入相同的效果,但遗憾的是,我(还)不知道如何做到这一点


我也无法通过
路由
类/结构找到解决这个问题的方法。这是一些不透明的代码

MVC和ASP.NET Webforms都可以使用相同的路由引擎。值得注意的是,您没有指出C#或VB.NET-VB.NET本质上不区分大小写。