我已经使用Web-Api创建了一个安静的Web服务。
我试图在此网址发帖
../api/AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/say
base64用
编码HttpServerUtility.UrlTokenEncode();
我在尝试发帖时得到"HTTP Error 400. The request URL is invalid."
。
我已尝试设置maxUrlLength
,因为我已经看到其他一些人遇到同样类型的问题,唉,这没有帮助。
到目前为止,我已经尝试了
关于可能出现什么问题的任何好主意?
对于任何想要达到同样目标的人,我都会尝试 - 继承人我的路线
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 :(得分:1)
请尝试使用查询字符串中的键吗?
public class SomeController : Controller
[Route("api/say")]
public ActionResult Say(string key) {
}
使用像
这样的网址../api/say?key=AAEAAAD_____AQAAAAAAAAAMAgAAAEVPYmplY3RUb0Jhc2U2NCwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABlPYmplY3RUb0Jhc2U2NC5DcmVkZW50aWFsAgAAABk8VXNlcm5hbWU-a19fQmFja2luZ0ZpZWxkGTxQYXNRmllbGQBAQIAAAAGAwAAAA5hd2NhQGF0ZWEtYW5jdAYEAAAAC0czcnRtNG5zMGZ0CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2
答案 1 :(得分:0)
我知道你试过了web.config文件,但是你可以尝试增加maxLength
参数的key
吗?
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 }
);