请求URL太长HTTP错误414。请求URL太长

时间:2018-12-04 11:52:55

标签: c# asp.net ajax iis web-config

我正在尝试使用ajax post向我的C#处理程序发布一个包含29376个字符的网址。

我收到错误请求URL太长HTTP错误414。请求URL太长。如果我尝试使用相同的方法发布较小的网址,则系统运行正常。

我想念什么?

这就是我发给处理者的方式

  $.ajax({    
url: "MyHandlers/theHandler.ashx?method=mymethod",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        data: {
            var1: var1,
            var2: var2,
            var3: var3,
            var4: var4,
            var5: var5,
            var6: var6,
            var7: var7,
            var8: var8,
            var9: var9,
            var10: var10,
            var11: var11,
            var12: var12,
            var13: JSON.stringify(var13) //this is the var that is too long
        },
        success: function (result) {

        },
        error: function (result) {

        }
    });

我的c#方法

public string mymethod(int var1, int var2, string var3, string var4, int var5, string var6, string var7, string var8, string var9, string var10, string var11, string var12)
    {
         var jsonString = context.Request.Params["var13"];
    }

2 个答案:

答案 0 :(得分:-1)

您需要像下面这样指定ajax请求:

    $.ajax({
        url: "MyHandlers/theHandler.ashx?method=mymethod",
        contentType: "application/json; charset=utf-8",
        async: false,
        method: "POST",
        data: {
            var1: var1,
            var2: var2,
            var3: var3,
            var4: var4,
            var5: var5,
            var6: var6,
            var7: var7,
            var8: var8,
            var9: var9,
            var10: var10,
            var11: var11,
            var12: var12,
            var13: JSON.stringify(var13) //this is the var that is too long
        },
        dataType: "json"
    });

答案 1 :(得分:-1)

首先-您没有执行POST。您正在按照其他人在评论中所述进行GET操作。 414错误表示客户端请求的URI比服务器愿意解释的更长。

此错误最常见的原因就是您在这里所做的-发送GET而不是POST。

现在,什么是GET? GET是完全以URI发送的请求。服务器可以从URI解释值,例如:

http://www.example.com?operation=add&value=MyValue

因此,传递越来越多的值将导致URL太长。

什么是POST? POST是未在URI中发送的请求。所有内容均以http内容发送。例如:您正在发送内容:

{
    "FirstName" : "Jack",
    "SecondName": "London"
}

此地址:http://www.example.com

因此,您应该在这里发送POST请求而不是GET。 只需添加:

type: "POST"

https://api.jquery.com/jquery.post/