加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何接受电子邮件地址作为路由值?

发布时间:2020-12-16 09:21:14 所属栏目:asp.Net 来源:网络整理
导读:我怎么能有这个简单的路线: http://domain.com/Calendar/Unsubscribe/my@email.com 我的路线看起来像: routes.MapRoute( "Unsubscribe","Calendar/Unsubscribe/{subscriber}",new { controller = "Calendar",action = "Unsubscribe",subscriber = "" });
我怎么能有这个简单的路线:

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页面:(

我有什么秘诀吗?

谢谢

解决方法

尝试在不更改路由规则的情况下向网址 http://domain.com/Calendar/Unsubscribe/my@email.com/添加尾部斜杠.

如果您仍想避免添加尾部斜杠并且可以使用URL Rewrite,则可以在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,以便电子邮件不是最后一个参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读