C# asp.net mvc路由捕获/{sometoken}

C# asp.net mvc路由捕获/{sometoken},c#,asp.net,.net,asp.net-mvc,routing,C#,Asp.net,.net,Asp.net Mvc,Routing,有一个网站应该在上面响应{sometoken}。其中{sometoken}是长度为6的字符串 如何编写routes.MapRoute将{sometoken}的所有请求映射到“Controller1/GetIdAction?sometoken={sometoken}” 我就是这样尝试的,但没有成功,我做错了什么 routes.MapRoute( "TokenRoute", "{someToken}",

有一个网站应该在上面响应{sometoken}。其中{sometoken}是长度为6的字符串

如何编写routes.MapRoute将{sometoken}的所有请求映射到“Controller1/GetIdAction?sometoken={sometoken}”

我就是这样尝试的,但没有成功,我做错了什么

 routes.MapRoute(
                "TokenRoute",
                "{someToken}",
                new { controller = "Controller1", action = "GetIdAction" },
                new { someToken = "^[a-f0-9]{6}$" }
                );

这是URL重写,应在web.config中配置

<system.webServer>
 <rewrite>
    <rules>
      <rule name="someToken">
        <match ignoreCase="false" url="^([a-f0-9]{6})$" />
        <action type="Rewrite" url="Controller1/GetIdAction?someToken={R:1}" />      
      </rule>
    </rules>
  </rewrite>
</system.webServer>


感谢@TetsuyaYamamoto提供的解决方案。

如果您将其作为查询参数(“?sometoken=foobar”)传递,则无需在路由中明确声明。对于带有查询字符串的URL(仅适用于带有斜杠的URL),无需使用
MapRoute
。将带有查询字符串的URL转换为带有斜杠的URL的机制称为URL重写(通常在web.config或IIS中配置)。谢谢@TetsuyaYamamoto。它与web.config一起工作。我没有意识到这一点。非常好的解决方案。:)