湿API路由无效

我在服务器端使用了asp.net Web API,该API应该使用电话号码或电子邮件地址作为用户登录名,它可以与电子邮件地址和电话号码完美地配合使用,且无需在前缀上加上'+'。 +此api永远不会受到打击。


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


[HttpPost]

[HttpOptions]     

[Route("{UserName}/ResetCode")]

public IHttpActionResult ResetCode([FromUri]string userName, [FromUri]string lan = null)

{

    service.ResetCode(userName, language);

    return Ok();

}

提琴手要求:电话号码中带有+:


http://localhost:56771/api/Account/%2B18888888888/ResetCode?lan=en-US

这没有打我的api。


无+的提琴手请求:


http://localhost:56771/api/Account/18888888888/ResetCode?lan=en-US

此网址会触发该服务。


提琴手的要求与电子邮件:


http://localhost:56771/api/Account/abc%40GMAIL.COM/ResetCode?lan=en-US

此网址会触发该服务。


可能是第一个url(上面列出的)无法访问该服务的原因。


谢谢你的帮助。


摇曳的蔷薇
浏览 120回答 1
1回答

湖上湖

可能是%2B在URL中接收到或将其理解为+,然后将其转换为空格。您也可以尝试通过对%符号进行编码(一种称为双重编码)来防止这种情况。+然后成为%252B。让我知道是否有帮助。更新,以使答案更完整(感谢JH):您还需要确保中存在以下设置Web.Config。<system.webserver>&nbsp; &nbsp; <security>&nbsp; &nbsp; &nbsp; &nbsp; <requestFiltering allowDoubleEscaping="true">&nbsp; &nbsp; </security></system.webserver>
打开App,查看更多内容
随时随地看视频慕课网APP