C# asp.net mvc路由捕获/{sometoken}
有一个网站应该在上面响应{sometoken}。其中{sometoken}是长度为6的字符串 如何编写routes.MapRoute将{sometoken}的所有请求映射到“Controller1/GetIdAction?sometoken={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}",
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一起工作。我没有意识到这一点。非常好的解决方案。:)