2012-01-31 79 views
1

我试图在ASP.NET MVC 3应用程序中执行编程HTTP POST。目的是模仿表单提交。WebRequest.GetResponseStream()在ASP.NET MVC 3项目中失败

我用下面的代码(为了保密略有修改):

string input = "foo=bar"; 
byte[] data = Encoding.UTF8.GetBytes(input); 

var request = (HttpWebRequest)WebRequest.Create("http://my.domain.com/endpoint"); 

request.ContentLength = data.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Method = "POST"; 

using (var stream = request.GetRequestStream()) { 
    stream.Write(request); 
    stream.Close(); 
} 

var response = request.GetResponse(); 

// get the response data, do backflips, save the world 

的问题是,我得到了.GetRequestStream()通话过程中发生错误,说我无法连接到URL资源。

但是,如果我在控制台应用程序中插入完全相同的代码,我可以很好地连接。一位同事也设法在WCF服务应用程序中使用相同的代码进行连接。

这使我疯狂。任何帮助,将不胜感激。

+3

第一个明显的区别是与控制台应用程序相关的安全性和站点不同。尝试摆弄你的安全配置文件 - 你运行什么类型的用户?看看是否有帮助 – 2012-01-31 09:45:08

+0

还请确保该用户有权在防火墙(端口80)中进行该呼叫。 – 2012-01-31 09:47:26

+0

@rangitatanz〜是的,也想到了 - 这就是为什么有WCF服务应用程序测试。但绝对会更多地考虑这一点。 – 2012-01-31 09:51:28

回答

0

这听起来像是一个安全问题。

要解决尝试以下操作:

  • 拨弄你的asp.net运行的安全上下文。
  • 确保防火墙设置正确 - 尝试禁用它进行快速检查。
  • 回落到使用ASP.net开发服务器来测试[;)

如果这并不工作,那么能否请您例如添加更多信息提琴手日志,堆栈跟踪。