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