ASP:NET 411 - 内容长度要求的错误

时间:2014-02-24 13:28:11

标签: c# asp.net

关于平均411错误有一些问题和答案。 但我的有点奇怪:我们有一个测试服务器和高效的测试服务器。错误,我的描述只发生在testserver上,它与生产者完全相同(连接字符串除外)。 我们在代码中调用WebMethod:

    [WebMethod]
    public static object GetEnterEditModeObject()
    {
        object btnId = HttpContext.Current.Session[Constants.Session.RoleEditBtnClientId.ToString()];
        var indRole = (V_WFA_ROLES)HttpContext.Current.Session[Constants.Session.RoleCurrentDatarow.ToString()];

        if (btnId != null && indRole != null)
        {
      ///... Some more code here

            var result = new
                {
                    btnId,
                    ///More Variables here

                };

            HttpContext.Current.Session[Constants.Session.RoleCurrentDatarow.ToString()] = null;
            HttpContext.Current.Session[Constants.Session.RoleEditBtnClientId.ToString()] = null;

            return result;
        }

        return null;
    }

这里没什么好看的:我们从Session中读出两个值,如果它们在那里,我们创建一个新对象,清除会话并返回对象,否则我们只返回null。

这很长时间以来一直很好,但现在我们得到了上面提到的错误。 由于它仍然在制作,我可以很容易地提琴,我得到这两个标题:

HTTP/1.1 411 Length Required
Date: Mon, 24 Feb 2014 13:10:40 GMT
Server: Apache
Content-Length: 344
X-FRAME-OPTIONS: SAMEORIGIN
Connection: close
Content-Type: text/html; charset=us-ascii


HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-UA-Compatible: IE=9; IE=8
Date: Mon, 24 Feb 2014 13:12:22 GMT
Content-Length: 10
Via: SomeURL

如您所见,两个标题的内容长度都存在,但我仍然会收到此错误。

你可以给我任何提示,可能会导致这样的问题吗?代码背后可能存在错误,这可能会造成这样的伤害吗?如果是的话,一个简单的try / catch会纠正这个问题吗?

感谢所有回复并在本周开了个好头!

的Matthias

编辑:通过添加

修复它
 [ScriptMethod(UseHttpGet=true, ResponseFormat = ResponseFormat.Json)]

对于所有Webmethods,但现在,我得到以下

HTTP/1.1 303 See Other
Date: Mon, 24 Feb 2014 17:04:33 GMT
Server: Apache
Content-Length: 196
Location: /error_path/400.html?al_req_id=Uwt7oX8AAAEAAGijHI4AAAYG
X-FRAME-OPTIONS: SAMEORIGIN
Keep-Alive: timeout=10, max=500
Connection: Keep-Alive
Content-Type: text/html

似乎将页面移动到error_path,但它不会显示Fiddler中的任何错误,也不会导致JavaScript导致问题。

似乎需要这种行为,但正如所说的那样,代码与生产中的代码相同,但这并不会发生。

此IIS设置是否会导致我的麻烦?

Edith2:知道了,在测试系统上安装了一个新的防火墙组件,它检查并更改了请求标头。所以我们了解到:如果标题不同,那么系统就有差异,客户就错了!

0 个答案:

没有答案