我用Web-Api创建了一个安静的webservice。当达到295个字符时,Restful post会抛出400个无效url
我试图做一个帖子在此URL
../api/AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/say
基于64位编码与
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
}
}
不回答你的问题,但应该是令牌是在头一个网址? (一个身份验证令牌?)看起来像一个可怕的网址;) – bryanmac 2014-11-04 12:20:35
我没有删除它们,但请忽略过多的标题,它不会使帖子更具可读性,甚至相反。此外,_“你做了什么?”并不意味着_“你的代码是什么?”_,而是_“你试图解决什么问题”_。例如,请参阅非常相关的问题[错误的请求 - 无效的URL网页API](http://stackoverflow.com/questions/17990427/bad-request-invalid-url-web-api)。 – CodeCaster 2014-11-04 12:26:04
似乎你因为一些大胆的文字而得到了downvote ..,令人难以置信 – 2014-11-04 12:29:23