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

pat*_*dge 9 c# iis-7 webrequest

我是否需要在WebRequest对象中打一些随机垃圾数据以获取IIS上的HTTP状态码411限制?

我在MVC 3应用程序中有一个HttpPost操作方法,该方法使用一个POST请求,其中包含在查询字符串中传递的所有相关信息(不需要正文).

[HttpPost] public ActionResult SignUp(string email) { ... }
Run Code Online (Sandbox Code Playgroud)

它在Visual Studio内置的Web主机Cassini中运行良好.不幸的是,一旦MVC代码在IIS [7.5 on 2008 R2]上运行,当我从外部C#表单应用程序点击它时,服务器正在回调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();
}
Run Code Online (Sandbox Code Playgroud)

pat*_*dge 21

事实证明,在发送请求之前,只需在请求上打一个空的内容长度即可完成此操作.

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

不确定如何明确地给出一个空的长度而不是暗示一个有所作为,但IIS在我做之后很高兴.可能有其他方法,但这似乎很简单.