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