以下是我发起请求的代码,
运行到WebResponse response = request.GetResponse();
这句时报异常,内容是
远程服务器返回错误: (411) 所需的长度
麻烦大家帮我看下是哪里的问题,谢谢了.
(备注:去掉添加Header的那两行也没效果)
public static void SetSessionID(string url) { Uri uri = new Uri(url); WebRequest request = WebRequest.Create(uri); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Headers.Add("Accept-Language", "zh-cn"); request.Headers.Add("Accept-Encoding", "gzip,deflate"); WebResponse response = request.GetResponse(); foreach (string item in response.Headers.Keys) { if (item == "Set-Cookie") { string[] data = response.Headers.GetValues(item); foreach (string d in data) { if (d.ContainsUL("SessionID")) { SessionID = d; return; } } } }
这是由于IIS7中POST请求限制的原因造成的,在IIS7中站点被以POST方式请求时,必须要求传递参数,如果调用的API无须传递参数,那么请加上一句即可解决411异常.
request.ContentLength = 0;
666.解决问题了
POST改为GET试试。
如果还是不行,修改配置文件中的MaxResponseLength再重启然后试一下。
谢谢您的回答,加上一句 request.ContentLength = 0;就可以了.