ASP.Net MVC:HTTP错误414.请求URL太长
ASP.Net MVC: HTTP Error 414. The request URL is too long
我正在开发一个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。我应该在web.config设置maxUrl吗。我需要什么来修复这个错误?
这里确实没有足够的信息来正确诊断您的问题。然而,考虑到您正在向一个没有更改(并且远低于限制)的静态URL字符串提交POST(它不会添加到URL中),这很可能是由于需要授权而导致的重定向循环的结果。
如果用户未登录,他们将被重定向到登录页面,但如果登录页面上的某些内容本身需要授权,他们将再次重定向到登录页,登录页将再次重定向,等等。每次重定向时,它都会附加一个returnUrl
参数,指向导致重定向的URL。随着每个重定向周期,此参数会变得越来越长,直到达到限制并引发异常。
如果用户未经授权,则重定向到的页面应允许匿名访问,并且该页面上呈现的任何内容(子操作)也应允许匿名存取。请检查您的登录操作和相关视图,以查看可能导致问题的原因。
此外,请记住,在使用MVC时,即使对返回JsonResult
的操作的AJAX调用仍然会重定向到应用程序的标准登录页,这在AJAX请求的上下文中显然是无用的。为了解决这个问题,您应该使用WebApi,或者不依赖于Authorize
属性。
要实现后者,您仍然必须包含Authorize
属性,以便在请求中填充用户数据,但也应该添加AllowAnonymous
。然后,在操作本身中,您可以检查用户是否真的是匿名的,并根据AJAX请求做出相应的响应。看起来您已经在尝试类似的东西,但如果没有AllowAnonymous
,代码就永远不会被利用。
- 在Javascript中查找请求URL
- 获取在 <脚本 src >标记中添加的请求 URL 的状态
- 自 2012 年 6 月 12 日以来,“未定义”随机附加到我网站上 1% 的请求 URL 中
- 在 $.ajaxSetup 转换器中获取 ajax 请求 URL,以便进行日志记录
- 桌面小部件使用的 $.getJSON 不会从浏览器请求 URL
- 从请求 URL 中删除参数
- 尝试使用 SharePoint 2013 的 REST 服务器和 CSOM 时,“未为此应用程序的请求 URL 部署应用
- ASP.Net MVC:HTTP错误414.请求URL太长
- 如何在JavaScript中HTTP请求URL
- 两个ajax请求url(成功/失败)
- Durandal:传递参数以查看请求url
- AuthorizedHandler阻止了错误的请求!url: / socket . io /
- Javascript加密和安全:避免检查内部请求url
- 是否有一种方法来获得get请求URL使用JavaScript?(不是浏览器中的当前URL)
- 如何从选项中获取angularjs的http请求url
- 设置一个小表单的请求URL
- 从请求url获取哈希参数
- 如何以字符串形式输出JSON请求URL
- 获取完整的JSON请求URL以进行故障排除
- 在Ember模型中自定义请求url