2012-04-02 14 views
0

私は外部サイトのPOSTリクエストをします。サイトは私のデータを返します。これもPOSTメソッドです。私は外部サイトにアクセスすることはできません(銀行です)。また、テストページがあり、コントロールの動作を確認します。別のWebサイトから500エラーポスト

テストページからPOSTを実行すると問題が発生する:外部サイトが自分のPOSTを受信して​​結果を送り返す(コントローラの動作は機能する)が、外部サイトにPOSTするとPOSTが受信されるしかし、私は銀行からPOSTを受け取ることができません。

これは(第2のテストページからバンクから最初の行)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 

はUPDATE:
これはアクションである:

[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"); 

     } 

UPDATE 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(); 
     } 

UPDATE 3:
トレースが有効になっており、結果は次のとおりです。これはスクリーンショットです: enter image description here ありがとうございました。
PS。 IIS 7.5のバージョン。

答えて

0

あなたのサイトの仕組みについての詳細を提供していないので、ここでしか推測できません。だから私の推測です:あなたのコントローラの動作は、いくつかのセッションやユーザ固有のものに依存しています。POSTリクエストをテストするサンプルページを作成し、Webブラウザで実行すると、現在のユーザのコンテキストから実行した外部Webサイトがあなたのアクションに対するPOSTリクエストを実行したときに、それはユーザーに関連付けられていない(セッションCookieを送信しなかった)ために失敗し、データにアクセスしようとしたときにコントローラアクションがクラッシュしました。したがって、コントローラのアクションにいくつかのログを記録し、手動で作成した要求と外部Webサイトからの要求がどのように異なるかを確認します。

+0

ありがとうございました。アクションはかなりシンプルです(ファイルにテキストを書き込む)。私は私の質問を更新しました。 – user348173

+0

それがうまくいっているかどうかを調べることがさらに簡単になります: '[HttpPost] public ActionResult PostLinkTest(){return Content(DateTime.Now.ToString(" dd MMM yyyy HH:mm ")); } '。また、実行中のカスタムアクションフィルタ(グローバルかどうか)がありますか?サーバーのイベントログを見てください。未処理の例外がASP.NETでスローされると、そこにトレースされます。したがって、HTTP 500ステータスコードの場合、おそらくWebサーバーのイベントログにエラーの詳細が表示されます。 –

+0

私はこれを試しましたが、結果は同じです。いいえ、アクションフィルタはありません – user348173

関連する問題