微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 当达到295个字符时,Restful post会抛出400个无效的url

我用Web-Api创建了一个安静的Web服务.

我正试图在这个网址上发帖子

../api/AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNrmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/say

base64编码为

HttpServerUtility.UrlTokenEncode();

我收到“HTTP错误400.请求URL无效.”当试图做一个帖子.

我已经尝试过设置maxUrlLength,因为我看到其他几个有同样类型的问题,唉,这没有帮助.

到目前为止,我已经尝试过了

>在web.config中更改maxUrlLength.
>在Registry中设置UrlSegmentMaxLength

到目前为止没有任何工作.
我发现神奇的数字是294允许的字符在完整网址的含义 – >如果我从长字符串中删除一些字符直到我得到294个字符,那么一切都是有意思的,为什么它确定它不是路由问题,也不是我的post方法的问题

关于可能出现什么问题的任何好主意?

对于任何想要实现我正在尝试的相同事物的人 –
继承人我的路线

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) {
    }

跟网址一样

../api/say?key=AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNrmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐