2011-05-06 22 views
9

我是否需要对WebRequest对象中的一些随机垃圾数据进行打包以获取IIS上的HTTP状态代码411限制?我可以从C#向IIS发送一个空的HTTP POST WebRequest对象吗?

我有一个MVC 3应用程序中的HttpPost操作方法,该方法使用查询字符串中传递的所有相关信息(无需身体)消耗POST请求。

[HttpPost] public ActionResult SignUp(string email) { ... } 

它从Visual Studio内置的Web主机Cassini中运行良好。不幸的是,一旦MVC代码在IIS上运行[2008 R2上的7.5],当我从外部C#表单应用程序中找到它时,服务器正在回传一个HTTP错误代码。

The remote server returned an error: (411) Length Required.

下面是调用代码:

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

回答

19

原来你可以得到这个通过简单地请求拍打空内容长度在发送前都要经过。

WebRequest request = WebRequest.Create("http://somewhere.com/signup/[email protected]"); 
request.Method = "POST"; 
request.ContentLength = 0; 

不知道如何明确地给出一个空白长度与暗示一个有所作为,但IIS后,我很高兴。这可能有其他方法,但这似乎很简单。

+0

太棒了,只是救了我的命。从我身边投票 – rahularyansharma 2012-07-03 11:48:31

相关问题