Restful post在达到295个字符时抛出400个无效url
本文关键字:400个 无效 url 字符 post 295个 Restful | 更新日期: 2023-09-27 18:28:57
我用WebApi创建了一个restful Web服务。
我正试图在这个网址上发帖
../api/AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/say
base64使用进行编码
HttpServerUtility.UrlTokenEncode();
我在试着做一篇文章时得到了"HTTP Error 400. The request URL is invalid."
。
我已经尝试过设置maxUrlLength
,因为我看到其他一些人也有同样的问题,唉,这没有帮助。
到目前为止,我已经尝试过
- 正在更改web.config中的maxUrlLength
- 在注册表中设置UrlSegmentMaxLength
到目前为止,一切都没有奏效。我发现神奇的数字是294个完整url中允许的字符,意思是->如果我从长字符串中删除一些字符,直到我得到294个字符,一切都会按预期进行,为什么确定这不是路由问题,也不是我的后方法的问题
关于这个问题可能是什么,有什么好主意吗?
对于任何试图实现与我相同目标的人-这是我的路线
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{key}/{controller}/{id}",
defaults: new { key=RouteParameter.Optional,id = RouteParameter.Optional }
);
和我的Post方法
public string Post(string key)
{
if(ConvertFromBase64(key))
{
//Do stuff
}
}
是否改为使用查询字符串中的键?
public class SomeController : Controller
[Route("api/say")]
public ActionResult Say(string key) {
}
使用类似的url
../api/say?key=AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2
我知道您尝试过web.config文件,但您能尝试增加key
参数的maxLength
吗?
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{key:maxlength(500)}/{controller}/{id}", //whatever is the max length of your parameter...
defaults: new { key=RouteParameter.Optional,id = RouteParameter.Optional }
);