Sagepay サーバーの ac#.net サイトへの統合に関する問題を解決しようとしています。最初、私は Sagepay シミュレーターが POST を送り返していないと信じていました。
その後、(ロギング中に) シミュレーターが値をサイトに POST しているが、値が失われていることを発見しました。これはglobal.asaxの問題かもしれないと思いました。
global.asax のすべてをコメントアウトしようとしましたが、シミュレーターからの値はまだ失われています。
私はlog4netを使用してステージを追跡してきました。これはシミュレーターからの呼び出しの 1 つであり、log4net がそれをデータベースに格納する方法です。
Application_BeginRequest
Application_BeginRequest Request.UrlReferrer :
Application_BeginRequest Request.ServerVariables.Count : 49
Application_BeginRequest: フォーム数 = 16
Application_AuthenticateRequest
Application_EndRequest
Application_PreSendRequestHeaders
Application_PreSendRequestContent
Application_End
Appliction 開始
Application_BeginRequest
Application_BeginRequest.UrlReferrer : Application_BeginRequest Request.ServerVariables.Count
: 48
Application_BeginRequest: FormBeginRequest: FormBeginRequest.0
フォーム:
Application_AuthenticateRequest
Application_AuthorizeRequest
Application_ResolveRequestCache
それはすべて数秒以内に起こります。ページをロードすると、投稿データが失われました。
これは、sagepay シミュレーターで得られるリターンです。
Raw Reponse from your Notification URL
Your Notification URL returned the following information in the response part of the POST. It has been formatted to wrap every 100 characters to make it more readable.
<form method="post" action="/(A(ubPhPgmAzQEkAAAANzA1MTdhOTctZTJiZi00NzU3LWEyZjItODcxMzI2NW<BR>I3ZjA20))/PaymentGateway/SagePayServerReturn2.aspx" id="ctl00"><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMzIwOTI4NzM3ZGR7QWh08mOnnMUf7wtZMkwEWKknSW6n2TMurN5RJnAIbw==" />
.asp を使用して、シミュレーターが POST を返し、.asp で動作することを確認しました。.aspx で動作しない理由については、本当に困っています。どんな助けでも大歓迎です。
アンドリュー
私は、セージページから少なくとも有効な応答を更新して取得することができました。
Status=INVALID
StatusDetail=Unable to find the transaction in our database.
RedirectURL=/PaymentGateway/SagePayOrderFailed.aspx?reasonCode=001
しかし、Application_BeginRequest を 2 回起動しているため、投稿データがどこかで失われています (これが役立つかどうかはわかりません)。
Application_BeginRequest が 2 回起動する理由がわかりました。sage pay がページにデータを送信しているときに、同じページにリダイレクトされます。
そのため、そこでデータが失われていますが、リダイレクトルールをすべて削除しましたが、まだ実行中です。私たちのソリューションには Response.Redriect() はありません。そのため、問題が発生している場所を次に探す場所がわかりません。