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

asp.net-mvc – 如何向ASP.NET MVC2控制器发送包含冒号的GET请求

发布时间:2020-12-16 09:57:44 所属栏目:asp.Net 来源:网络整理
导读:这很好用: GET /mvc/Movies/TitleIncludes/Lara%20Croft 当我提交包含冒号的请求时,如下所示: GET /mvc/Movies/TitleIncludes/Lara%20Croft:%20Tomb …它会产生400错误.该错误表明ASP.NET在URL中检测到无效字符. 如果我尝试url-escaping,请求看起来像这样
这很好用:

GET /mvc/Movies/TitleIncludes/Lara%20Croft

当我提交包含冒号的请求时,如下所示:

GET /mvc/Movies/TitleIncludes/Lara%20Croft:%20Tomb

…它会产生400错误.该错误表明ASP.NET在URL中检测到无效字符.

如果我尝试url-escaping,请求看起来像这样:

GET /mvc/Movies/TitleIncludes/Lara%20Croft%3A%20Tomb

……这也给了我一个400错误.

如果我用|替换冒号:

GET /mvc/Movies/TitleIncludes/Lara%20Croft|%20Tomb

..这也被认为是非法的,这次有500错误.消息:路径中的非法字符.

URL转义为|导致相同的错误.

我真的,真的不想使用querystring参数.

有关:
Sending URLs/paths to ASP.NET MVC controller actions

解决方法

我发现URL编码不起作用,但自定义编码确实如此.
我想ASPNET MVC使用文件系统来进行解析和路由,因为URL中的一个字符在文件系统中是不合法的,会导致500或400错误.

所以我所做的就是用unicode替换冒号
?javascript方面的字符,然后在操作中进行相反的操作.像这样:

浏览器:

function myEscape(s){
    return s.replace(':','%C2%A1').trim();
}

在操作中,在使用参数之前调用此转换:

private string MyCustomUnescape(string arg)
{
    return arg.Replace("?",":");
}

相同的方法适用于斜杠 – 只需选择一个不同的unicode字符.当然,如果您的字符串参数本身是unicode,那么您将不得不为“编码”表单使用不可打印的字符.

(编辑:李大同)

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

    推荐文章
      热点阅读