【问题标题】:WebRequest.GetResponseStream() failing in ASP.NET MVC 3 projectWebRequest.GetResponseStream() 在 ASP.NET MVC 3 项目中失败
【发布时间】: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


【解决方案1】:

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

要修复,请尝试以下操作:

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

如果这不起作用,那么您能否添加更多信息,例如Fiddler 日志、堆栈跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多