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

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...