我对外部网站发出POST请求。该站点返回数据,也返回POST方法。我无法访问外部网站(它是银行)。还有一个测试页面,用于检查控制器的动作是否有效。
当我从测试页面进行POST时,问题一切正常:外部站点接收我的POST并将结果发回给我(控制器的动作是有效的),但是当我对外部站点进行POST时,它会收到我的POST,但是我不能从银行收到邮件。
这是IIS日志(银行的第一行,测试页的第二行):
2012-04-02 08:00:11 82.200.165.5 POST /Home/PostLinkTest - 80 - 193.93.56.223 Java/1.6.0_31 500 0 0 31
2012-04-02 08:01:58 82.200.165.5 POST /Home/PostLinkTest - 80 - 2.133.42.201 Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:11.0)+Gecko/20100101+Firefox/11.0 200 0 0 227
更新
这是行动:
[HttpPost]
public ActionResult PostLinkTest()
{
StreamWriter erFile = new StreamWriter(Path.Combine(Server.MapPath("~"), "\\error\\error.txt"), true);
string strTimeStamp = DateTime.Now.ToString("dd MMM yyyy HH:mm");
erFile.WriteLine("Date " + strTimeStamp);
erFile.WriteLine("------------------------");
erFile.WriteLine("PostLinkTest ");
erFile.WriteLine("------------------------ X -------------------------");
erFile.Close();
return View("ShowResponse");
}
更新2::尝试捕获错误:
void Application_Error(object sender, EventArgs e)
{
var error = Server.GetLastError();
StreamWriter erFile = new StreamWriter(Path.Combine(Server.MapPath("~"), "\\error\\error.txt"), true);
string strTimeStamp = DateTime.Now.ToString("dd MMM yyyy HH:mm");
erFile.WriteLine("Date " + strTimeStamp);
erFile.WriteLine("------------------------");
erFile.WriteLine("ApplicationError: " + error.Message + "\n" + error.StackTrace);
erFile.WriteLine("------------------------ X -------------------------");
erFile.Close();
}
更新3:
我启用了跟踪,结果如下。这是截图:
谢谢。
PS。 IIS 7.5的版本。
答案 0 :(得分:0)
由于您未提供有关网站运作方式的任何详细信息,因此我们只能在此猜测。所以这是我的猜测:您的控制器操作取决于某些会话或用户特定的内容,当您创建示例页面以测试POST请求并在Web浏览器中执行它时,因为您是从当前用户的上下文执行它,但是当外部网站对您的操作执行POST请求时,它失败了,因为它没有与任何用户关联(它没有发送会话cookie),并且当您尝试访问数据时控制器操作崩溃。因此,在控制器操作中添加一些日志记录,并查看来自外部网站的请求与您手动制作的请求的不同之处。