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

asp.net – URL编码冒号在400 Bad Request中解析

发布时间:2020-12-16 07:10:27 所属栏目:asp.Net 来源:网络整理
导读:为什么这个网址会在400中解决 – 错误请求? http://localhost:2785/api/ticker/Web.App.QuotesReaders/search=se%3Aabb 我的环境是Visual Studio 2010,MVC 4和使用的控制器是WebApiController. :是一个URL编码的冒号. 解 这有一些原因: http://localhost:
为什么这个网址会在400中解决 – 错误请求?

http://localhost:2785/api/ticker/Web.App.QuotesReaders/search=se%3Aabb

我的环境是Visual Studio 2010,MVC 4和使用的控制器是WebApiController.

:是一个URL编码的冒号.

这有一些原因:

http://localhost:2785/api/ticker?className=Web.App.QuotesReaders&search=se%3Aabb

…这意味着,我无法在global.asax.cs中指定此路由:

/api/ticker/{className}/{search}

……也不是……

/api/ticker/{className}/search={search}

… 但是这个 …

/api/ticker

欲了解更多信息:http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx

解决方法

似乎ASP.net在’?’之前不允许冒号在URL中,即使它被编码为:.

例如,这些不起作用

http://foo.org/api/persons/foo:bar
http://foo.org/api/persons/foo%3abar

但这有效:
http://foo.org/api/persons?id=foo%3abar

在所有示例中,我们希望ASP.NET MVC将“foo:bar”作为id参数传递,并进行正确解码.我刚刚用MVC4对它进行了测试,它似乎有效.令人讨厌的是它不接受问号之前的URL编码,但我确信它有充分的理由.可能要在问号前面保留一切有效的URL和问号后面的任何参数.

(编辑:李大同)

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

    推荐文章
      热点阅读