私は支払いプロバイダー (SagePay) をテストしていますが、プロセスの一部として、サーバーが私のサイトに POST し、応答を期待しています。MVCを使用してこれを機能させることはできません。
従来の ASP テスト応答ページをセットアップし、MVC アプリに追加しました。
<%
Response.Buffer = True
response.Clear()
response.contenttype="text/plain"
response.write "Status=OK" & vbCRLF
response.write "RedirectURL=http://www.redirectsomewhere.co.uk" & vbCRLF
response.End()
%>
これはうまくいきます。
ただし、MVC で同じことをしようとすると、うまくいきません。
コントローラ:
[HttpPost]
public ActionResult TestCallback()
{
return View();
}
意見:
@{
Response.Buffer = true;
Response.Clear();
Response.ContentType = "text/plain";
Response.Write("Status=OK" + System.Environment.NewLine);
Response.Write("RedirectURL=http://www.redirectsomewhere.co.uk" + System.Environment.NewLine);
Response.End();
}
エラー メッセージは支払いプロバイダーからの一般的なエラーであるため、実際には役に立ちませんが、ページがレンダリングされる時点までエラーを絞り込みました。
両方のページを正常に参照でき (これには、MVC コントローラー メソッドから HttpPost 属性を削除する必要があります)、両方のページに同じデータが表示されます。
これは、支払いプロバイダーが POST している MVC URL です。
http://myipaddress/CA_UAT/Token/TestCallback
これは正常に動作する従来の asp URL です。
http://myipaddress/CA_UAT/Token/TestCallback.asp
テスト目的でURLが一致するように、aspページの「トークン」ディレクトリを作成しました。
私は何を間違っていますか?
アップデート
Hari のコメントに応えて、「Header Spy」という Firefox プラグインをインストールすると、次の情報が得られます。
Response HTTP/1.1 200 OK
Source: Response
HttpHeader:Server
Request:User-Agent Cookie
Response:Response Date Set-Cookie
両方のページに同じ情報が表示されます。