javascript - ASP.Net MVC : HTTP Error 414. 请求 URL 太长

标签 javascript jquery html ajax asp.net-mvc

<分区>

我正在开发一个 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 Error 414. The request URL is too long.

我在 javascript 函数中调用 Ajax 时遇到错误。看起来 URL 不超过 2000 个字符的限制。 在 web.config 中我没有 maxQueryStringLength。我是否需要在 web.config 中设置 maxUrl。 我需要什么来修复这个错误?

最佳答案

此处确实不足以正确诊断您的问题。但是,假设您正在向未更改(并且远低于限制)的静态 URL 字符串提交 POST(不添加到 URL),这很可能是由于要求引起的重定向循环的结果授权。

如果用户未登录,他们将被重定向到登录页面,但是,如果登录页面上的内容本身需要授权,他们将再次重定向到登录页面,再次重定向,等等。每次重定向时,它都会附加一个 returnUrl 参数,指向导致重定向的 URL。在每个重定向周期中,此参数会变得越来越长,直到达到限制并引发异常。

如果用户未获得授权,则重定向到的页面应允许匿名访问,并且该页面上呈现的任何内容(子操作)也应允许匿名访问。检查您的登录操作和关联的 View ,看看可能导致问题的原因。

此外,请记住,当使用 MVC 时,即使是对返回 JsonResult 的操作的 AJAX 调用仍将重定向到应用程序的标准登录页面,这显然在AJAX 请求的上下文。要解决此问题,您应该使用 Web Api 或者不要依赖 Authorize 属性。

要实现后者,您仍然必须包含 Authorize 属性以在请求中填充用户数据,但您还应该添加 AllowAnonymous。然后,在操作本身中,您可以检查用户是否真的是匿名的,并根据您的 AJAX 请求做出相应的响应。看起来您已经在尝试类似的事情了,但是如果没有 AllowAnonymous,该代码将永远不会被使用。

关于javascript - ASP.Net MVC : HTTP Error 414. 请求 URL 太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273858/

相关文章:

javascript - HTML5 JS fillRect() 奇怪的行为

jquery - openweather API .getJSON 请求返回未定义

javascript - 悬停时转换的 Angular 自定义指令显示错误

javascript - 在 ngView 中加载 Angularjs Controller

javascript - 如何从 JavaScript 中的 &lt;style&gt; 标签获取样式属性?

javascript - 使用 Ajax 刷新表

javascript - 如何根据 Javascript 中检查的内容提醒特殊事件

javascript - Rails 5 不渲染 JQuery 结果

jquery - 禁用整个 Redactor.js 所见即所得编辑器

html - Django:没有应用 CSS