c# - MVC4 : url routing with email as parameter

标签 c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我有这个 url,它在我的 VS 网络服务器上工作得非常好

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

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

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

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

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

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

http://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);
    }

在你看来:

<a href="@Url.Action("MyAction", new { Id = email.ToBase64() })">Link</a>

在你的 Controller 中

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

关于c# - MVC4 : url routing with email as parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978555/

相关文章:

c# - HTMLAgilityPack 使用 C# 解析 HTML 的问题

c# - System.Text.Encoding.GetEncoding ("iso-8859-1") 抛出 PlatformNotSupportedException?

c# - MVC : pass parameter to view?

c# - Razor 声明性助手条件属性 - 带空格的类不起作用

c# - MS CRM 从另一方收到不安全或不正确的安全故障

c# - 从ViewModel调用 View 上的事件或方法

asp.net-mvc - KendoUI网格显示记录总数

c# - 无法从用法中推断方法 System.Linq.Enumerable.OrderBy 的类型参数

asp.net - 用户登录时如何比较这个加盐密码?

asp.net-mvc - ASP MVC 设置定义图像文件夹