我可以从C#向IIS发送一个空的HTTP POST WebRequest对象吗?

我可以从C#向IIS发送一个空的HTTP POST WebRequest对象吗?,c#,iis-7,webrequest,C#,Iis 7,Webrequest,我需要在WebRequest对象中添加一些随机垃圾数据才能通过IIS上的HTTP状态码411限制吗 我在MVC 3应用程序中有一个HttpPost操作方法,它使用一个POST请求,并在querystring中传递所有相关信息(无需正文) 它在VisualStudio的内置web主机Cassini上运行得非常好。不幸的是,一旦MVC代码在IIS上运行[2008 R2上的7.5],当我从我的外部C#form应用程序中点击它时,服务器正在回击一个HTTP错误代码 远程服务器返回了一个错误: (411)

我需要在
WebRequest
对象中添加一些随机垃圾数据才能通过IIS上的HTTP状态码411限制吗

我在MVC 3应用程序中有一个HttpPost操作方法,它使用一个POST请求,并在querystring中传递所有相关信息(无需正文)

它在VisualStudio的内置web主机Cassini上运行得非常好。不幸的是,一旦MVC代码在IIS上运行[2008 R2上的7.5],当我从我的外部C#form应用程序中点击它时,服务器正在回击一个HTTP错误代码

远程服务器返回了一个错误: (411)所需长度

以下是呼叫代码:

WebRequest request = WebRequest.Create("http://somewhere.com/signup/?email=a@b.com");
request.Method = "POST";
using (WebResponse response = request.GetResponse())
using (Stream responseStream = response.GetResponseStream())
using (StreamReader responseReader = new StreamReader(responseStream)) {
    // Do something with responseReader.ReadToEnd();
}

事实证明,在发送请求之前,只需在请求上加上一个空的内容长度,就可以完成此任务

WebRequest request = WebRequest.Create("http://somewhere.com/signup/?email=a@b.com");
request.Method = "POST";
request.ContentLength = 0;

我不确定给出一个空长度与暗示一个有多大区别,但在我这么做之后,IIS很高兴。可能还有其他方法可以解决这个问题,但这似乎很简单。

我相信,每当您向web服务器发布请求时,都需要设置内容长度头:

您可以尝试一个GET请求来测试它

WebRequest request = WebRequest.Create("http://somewhere.com/signup/?email=a@b.com");
request.Method = "POST";
request.ContentLength = 0;