首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wep api路由不工作

Wep api路由不工作
EN

Stack Overflow用户
提问于 2018-04-30 19:59:22
回答 1查看 80关注 0票数 2

我在我的服务器端遵循asp.net网络api,它应该接受用户登录时的电话号码或电子邮件地址,name.It可以很好地处理电子邮件地址和电话号码,而无需在it.When电话号码后面加上“+”,这个api就不会被击中。

类级路由前缀:[RoutePrefix("api/Account")]

代码语言:javascript
复制
[HttpPost]
[HttpOptions]     
[Route("{UserName}/ResetCode")]
public IHttpActionResult ResetCode([FromUri]string userName, [FromUri]string lan = null)
{
    service.ResetCode(userName, language);
    return Ok();
}

Fiddler请求:电话号码为+:

代码语言:javascript
复制
http://localhost:56771/api/Account/%2B18888888888/ResetCode?lan=en-US

这并没有影响我的api。

Fiddler请求没有+:

代码语言:javascript
复制
http://localhost:56771/api/Account/18888888888/ResetCode?lan=en-US

此Url访问该服务。

Fiddler请求与电子邮件:

代码语言:javascript
复制
http://localhost:56771/api/Account/abc%40GMAIL.COM/ResetCode?lan=en-US

此Url访问该服务。

第一个url(上面列出的)无法访问服务的原因是什么?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-30 20:21:16

可能是URL中的%2B被接收或理解为+,然后转换成一个空格。

您可以尝试通过对%符号进行编码来防止这种情况发生,这种做法称为双重编码。然后+变成%252B。如果这有帮助的话请告诉我。

更新,以使答案更完整(感谢J.H.):

您还需要确保Web.Config中存在以下设置。

代码语言:javascript
复制
<system.webserver>
    <security>
        <requestFiltering allowDoubleEscaping="true">
    </security>
</system.webserver>

有关这方面的更多信息,请参见例如this answer

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50107394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档