我正在测试支付提供商 (SagePay),作为流程的一部分,他们的服务器会发布到我的站点并期望得到响应。我无法使用 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 属性),并且两个页面都显示相同的数据。
这是支付提供商发布到的 MVC url:
http://myipaddress/CA_UAT/Token/TestCallback
这是可以正常工作的经典 asp URL:
http://myipaddress/CA_UAT/Token/TestCallback.asp
我为 asp 页面创建了一个“令牌”目录,以便 url 匹配以用于测试目的。
我究竟做错了什么?
更新
为了回应 Hari 的评论,我安装了一个名为“Header Spy”的 Firefox 插件,它为我提供了以下信息:
Response HTTP/1.1 200 OK
Source: Response
HttpHeader:Server
Request:User-Agent Cookie
Response:Response Date Set-Cookie
两个页面显示相同的信息。