Csharp/C#教程:MVC4:使用电子邮件作为参数进行URL路由分享


MVC4:使用电子邮件作为参数进行URL路由

我有这个url在我的VS网络服务器上运行得非常好

https://localhost:4454/cms/account/edituser/email@domain.com (works) 

但是当我将这个站点发布到IIS7.5时,它只会抛出404。

 https://dev.test.com/cms/account/edituser/email@domian.com (does not work) 

但如果删除电子邮件地址,就会发生奇怪的事情

 https://dev.test.com/cms/account/edituser/email (works , no 404) 

但如果我用查询字符串更改我的url,它可以正常工作

 https://dev.test.com/cms/account/edituser?id=email@domain.com (works) 

这是我的路线入口

 routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults new[] { "App.NameSpace.Web.Controllers" } ); 

我注意到的奇怪的事情是,当服务器抛出404错误页面时,它是标准iis 404页面而不是我拥有的一个自定义页面。
所以我想知道我的路由映射有什么问题,或者IIS不喜欢有电子邮件作为参数的url。 但是我的当地开发人员一切正常。
谢谢

尝试在URL中编码电子邮件地址的URL。

编辑

UrlEncode + Base64?

  public static string ToBase64(this string value) { byte[] bytes = Encoding.UTF8.GetBytes(value); return Convert.ToBase64String(bytes); } public static string FromBase64(this string value) { byte[] bytes = Convert.FromBase64String(value); return Encoding.UTF8.GetString(bytes); } 

在你看来:

 Link 

在你的控制器中

 function ActionResult MyAction(string id){ id = id.FromBase64(); //rest of your logic here } 

email@domain.com包含不是路径合法部分的字符(有充分理由,它们通常用于特殊function)。 你需要引用/ url编码这些字符或在查询字符串中传递它们。

斯科特·汉塞尔曼(Scott Hanselman)在url上发表了一篇关于允许“顽皮的事情”的文章。

上述就是C#学习教程:MVC4:使用电子邮件作为参数进行URL路由分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/954861.html

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

精彩推荐