ASP.Net MVC:HTTP错误414.请求URL太长
我正在开发一个ASP.Net MVC应用程序。 在按钮上单击,我打电话给JavaScript函数。
this.appDetails = function() {
editorModel.appModel.application.Name = $("#appTitleText").val();
editorModel.appModel.application.Nicknames_c = $("#appNicknames").val();
editorModel.appModel.application.Default_HMI__c = $("#AppModel_application_Default_HMI__c").val();
editorModel.appModel.application.Description__c = $("#appOverviewText").val();
$.ajax({
type: 'POST',
url: '/Dashboard/Application/AppDetailsEdit',
data: { 'application': editorModel.appModel },
success: function (events) {
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
}
Controller.cs
[Authorize]
[HttpPost]
public JsonResult AppDetailsEdit(EditAppModel application)
{
if (GetUserId() == Guid.Empty)
{
throw new UnauthorizedAccessException("Person Not Logged In");
}
login();
}
我收到错误
HTTP错误414.请求URL太长。
我在javascript函数中发生Ajax调用时出错。 它看起来像URL不超过2000个字符的限制。 在web.config中我没有maxQueryStringLength.Should需要在web.config中设置maxUrl。 我需要什么来解决这个错误?
这里真的不够,无法正确诊断您的问题。 但是,鉴于您将POST(未添加到URL)提交给静态URL字符串,该静态URL字符串不会更改(并且远低于该限制),这很可能是由于需要重定向循环授权。
如果用户没有登录,他们将被重定向到登录页面,但是,如果登录页面上的某些内容需要授权,他们会再次被重定向到登录页面,该页面会再次被重定向等。每次重定向,它returnUrl
一个returnUrl
参数,指向导致重定向的URL。 对于每个重定向周期,该参数会变得越来越长,直到碰到限制并引发异常。
如果用户未被授权,用户被重定向到的页面应允许匿名访问,并且该页面上呈现的任何内容(子操作)也应允许匿名访问。 检查您的登录操作和相关视图,以查看可能导致问题的原因。
另外,请记住,使用MVC时,即使对返回JsonResult
的操作的AJAX调用仍然会重定向到应用程序的标准登录页面,这显然在AJAX请求的上下文中没有用处。 为了解决这个问题,你应该使用Web Api或者不要依赖Authorize
属性。
为了实现后者,您仍然必须包含Authorize
属性以将用户数据填充到请求中,但是您还应该添加AllowAnonymous
。 然后,在动作本身中,您可以检查用户是否实际上是匿名的,并根据您的AJAX请求进行相应的响应。 它看起来像你正在尝试这样的事情,但没有AllowAnonymous
代码从未被利用。
上一篇: ASP.Net MVC: HTTP Error 414. The request URL is too long
下一篇: look like Query string parameter length issue in my MVC website