我怎样才能拥有这条简单的路线:
http://domain.com/Calendar/Unsubscribe/my@email.com
我的路线如下所示:
routes.MapRoute(
"Unsubscribe",
"Calendar/Unsubscribe/{subscriber}",
new {
controller = "Calendar",
action = "Unsubscribe",
subscriber = "" }
);
我的行动是:
public ActionResult Unsubscribe(string subscriber)
{
...
}
没有任何参数,如 http://domain.com/Calendar/Unsubscribe/
工作正常,但很快我添加了电子邮件,我得到一个 404
页面: (
我有什么诀窍吗?
谢谢
最佳答案
尝试在 URL http://domain.com/Calendar/Unsubscribe/my@email.com/ 中添加 斜杠
无需更改路由规则。
如果您仍想避免添加 尾部斜杠
,并且您有 URL 重写可用,您可以在 web.config 中添加重写规则
<system.webServer>
<rewrite>
<rules>
<rule name="Fix Unsubscribe emails route" stopProcessing="true">
<match url="^(Calendar/Unsubscribe/.*@.*)$" />
<action type="Rewrite" url="{R:1}/" />
</rule>
</rules>
</rewrite>
</system.webServer>
为了便于阅读,您还可以编写一个比我提供的更好的正则表达式。
您也可以尝试重新排序您的路由参数,例如/Calendar/my@email.com/Unsubscribe,以便电子邮件不是最后一个参数。
关于asp.net-mvc - 如何接受电子邮件地址作为路由值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4307358/