【发布时间】:2012-01-31 09:39:31
【问题描述】:
我正在尝试在 ASP.NET MVC 3 应用程序中执行程序化 HTTP POST。目的是模仿表单提交。
我正在使用以下代码(为保密起见稍作修改):
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 服务应用程序中使用相同的代码进行连接。
这让我发疯了。对此的任何帮助将不胜感激。
【问题讨论】:
-
第一个明显的区别是与控制台应用程序和站点相关的安全性不同。试着摆弄你的安全配置文件——你运行的是什么类型的用户?看看有没有帮助
-
还要确保该用户有权在防火墙(端口 80)中进行该调用。
-
@rangitatanz ~ 是的,我也想到了 --- 这就是为什么还有 WCF 服务应用程序测试。但肯定会对此进行更多研究。
-
是的,但你说的是“同事”——你是在系统上运行的吗?
-
@rangitatanz ~ 是的。抱歉没有说清楚。
标签: asp.net .net asp.net-mvc-3 http-post