C# Restful post在达到295个字符时抛出400个无效url
我已经用Web Api创建了一个restful Web服务 我正试图在这个网址上发表文章C# Restful post在达到295个字符时抛出400个无效url,c#,web-services,rest,asp.net-web-api,C#,Web Services,Rest,Asp.net Web Api,我已经用Web Api创建了一个restful Web服务 我正试图在这个网址上发表文章 ../api/AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0
../api/AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/say
base64是用
HttpServerUtility.UrlTokenEncode();
我收到一个“HTTP错误400。请求URL无效。”
在尝试发布时
我试过设置maxurlength
,因为我看到其他一些人也有同样的问题,唉,这没有帮助
到目前为止,我已经试过了
- 正在更改web.config中的maxUrlLength
- 在注册表中设置UrlSegmentMaxLength
public string Post(string key)
{
if(ConvertFromBase64(key))
{
//Do stuff
}
}
关于这个问题有什么好主意吗
对于任何试图实现我正在尝试的目标的人-
这是我的路线
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{key}/{controller}/{id}",
defaults: new { key=RouteParameter.Optional,id = RouteParameter.Optional }
);
还有我的发帖方法
public string Post(string key)
{
if(ConvertFromBase64(key))
{
//Do stuff
}
}
我知道您尝试了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 }
);
是否改为使用查询字符串中的键
public class SomeController : Controller
[Route("api/say")]
public ActionResult Say(string key) {
}
像这样的url
../api/say?key=AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2
不是对您问题的回答,但该标记是否应位于标题中?(身份验证令牌?)似乎是一个糟糕的url;)我没有删除它们,但是请去掉过多的标题,这并不会使文章更可读,相反,甚至更容易阅读。另外,“您尝试了什么?”并不意味着“您的代码是什么?”,而是“您尝试了什么来解决问题”。例如,看一个非常相关的问题。你似乎因为一些粗体的文字而获得了否决票。难以置信,我不明白你在“还”之后的意思,我已经删除了标题,尽管我不同意你的观点。当然,如果你在发帖子,标记应该在帖子数据中,不是URL?@AlexCarlsen我的建议是在查询字符串中传递此令牌,而不是URI的一部分,您不知道此令牌中可能包含哪些字符,并且某些字符不能作为URI的一部分。@TaiseerJoudeh我也同意这一点,除非Alex确定不会有冲突的垃圾进入其中。from MSDN:HttpServerUtility.urltokencode—“使用基本64位将字节数组编码为其等效的字符串表示形式,这可用于在URL上传输。”因此,任何垃圾都不会从中产生