ASP.Net MVC:HTTP错误414.请求URL太长
我正在开发一个ASP.Net MVC应用程序。在按钮上单击,我打电话给JavaScript函数。ASP.Net MVC:HTTP错误414.请求URL太长
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
param,指向导致重定向的URL。对于每个重定向周期,该参数会变得越来越长,直到碰到限制并引发异常。
如果用户未被授权,用户被重定向到的页面应允许匿名访问,并且该页面上呈现的任何内容(子操作)也应允许匿名访问。检查您的登录操作和相关视图,以查看可能导致问题的原因。另外,请记住,使用MVC时,即使对返回JsonResult
的操作的AJAX调用仍将重定向到应用程序的标准登录页面,这在AJAX请求的上下文中显然没有用处。为了解决这个问题,您应该使用Web Api或不要依赖Authorize
属性。
要实现后者,您仍然必须包含Authorize
属性以将用户数据填充到请求中,但是您还应该添加AllowAnonymous
。然后,在动作本身中,您可以检查用户是否实际上是匿名的,并根据您的AJAX请求进行相应的响应。它看起来像你正在尝试这样的事情,但没有AllowAnonymous
该代码从未被利用。
您是否打开过浏览器开发工具箱或像Fiddler这样的工具来查看实际的url? –