+(加号)登录 Web API 路由
Posted
技术标签:
【中文标题】+(加号)登录 Web API 路由【英文标题】:+ (plus) sign in Web API routing 【发布时间】:2014-11-25 02:04:55 【问题描述】:我正在处理一个 asp.net web api 项目,我必须通过一个帖子传递一个手机号码。但我不能返回加号。
我的路线:
config.Routes.MapHttpRoute(
name: "SmsRoute",
routeTemplate: "rest/sms/country/company/phone/mobilenumber",
defaults: new controller = "Sms", action = "PostSms" );
控制器:
public HttpResponseMessage PostSms(string country, string company, string mobilenumber)
return Request.CreateResponse( HttpStatusCode.Created );
当我在 fiddler 上运行这个 post 方法时:
http://index.html/rest/sms/se/company/phone/46700101010/messages/out
我收到了这样的回复:
但我希望它能够显示加号。
【问题讨论】:
【参考方案1】:IIS 防止加号出现在 URL 路径元素中。
要禁用此功能,请在web.config
:
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
【讨论】:
【参考方案2】:这是我们在 url 中添加参数时遇到的常见异常。在这里,您可以了解您的 OP 是什么以及您以后运行时可能需要什么
对于+
,您可以有很多选项,您可以使用在您的 java 脚本文件中进行编码
encodeURIComponent();
如果你想在你的网址中添加任何特殊字符,比如.
,那么为了你的方便,只需在你的 web.config 中设置属性relaxedUrlToFileSystemMapping
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
或者您可以在web.config
中添加或删除一些字符以阻止/允许使用requestPathInvalidCharacters
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\,?"/>
【讨论】:
这是一个 WebAPI 问题。relaxedUrlToFileSystemMapping
禁止的字符列表为<, >, :, ", /, \, |, ? and *
。 requestPathInvalidCharacters
的默认值为<, >, *, %, &, :, \, ?
。据我所知,这些都对加号没有任何影响。【参考方案3】:
编码+
:
用这个替换你的 feedle 输入:
http://index.html/rest/sms/se/company/phone/%2B46700101010/messages/out
另见:AJAX POST and Plus Sign ( + ) -- How to Encode?
http://www.google.com/search?q=foo%2Bbar
【讨论】:
感谢提示,但不是编码 当你使用给定的例子时会发生什么? 编码在查询字符串中起作用,但在 URL 路径组件中不起作用。以上是关于+(加号)登录 Web API 路由的主要内容,如果未能解决你的问题,请参考以下文章