2014-11-04 27 views
4

我用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 
     } 
    } 
+0

不回答你的问题,但应该是令牌是在头一个网址? (一个身份验证令牌?)看起来像一个可怕的网址;) – bryanmac 2014-11-04 12:20:35

+0

我没有删除它们,但请忽略过多的标题,它不会使帖子更具可读性,甚至相反。此外,_“你做了什么?”并不意味着_“你的代码是什么?”_,而是_“你试图解决什么问题”_。例如,请参阅非常相关的问题[错误的请求 - 无效的URL网页API](http://stackoverflow.com/questions/17990427/bad-request-invalid-url-web-api)。 – CodeCaster 2014-11-04 12:26:04

+3

似乎你因为一些大胆的文字而得到了downvote ..,令人难以置信 – 2014-11-04 12:29:23

回答

0

我知道你通过web.config文件试过,但是你可以尝试增加参数keymaxLength,就像这样?

+0

I '试试这个,回到你身边:)谢谢 – VisualBean 2014-11-04 19:09:23

+0

@AlexCarlsen我的建议是将查询字符串中的这个标记传递给URI而不是URI的一部分,你不知道这个标记中可能有哪些字符,有些字符不会是可以接受为URI的一部分。 – 2014-11-04 21:55:31

+0

@TaiseerJoudeh我也同意这一点,除非Alex确信没有冲突的垃圾会进入那里。 – 2014-11-04 21:57:44

1

请尝试使用查询字符串中的键吗?

public class SomeController : Controller 
    [Route("api/say")] 
    public ActionResult Say(string key) { 
    } 

有了这样

../api/say?key=AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2 
相关问题