C# SagePay-接收时发生意外错误
按照以下地址的说明操作: 我得到以下错误: 基础连接已关闭:接收时发生意外错误C# SagePay-接收时发生意外错误,c#,transactions,httpwebrequest,integration,opayo,C#,Transactions,Httpwebrequest,Integration,Opayo,按照以下地址的说明操作: 我得到以下错误: 基础连接已关闭:接收时发生意外错误 创建包含所有必需值(VPSProtocol、TxType、Vendor、Crypt)的要发布的URL 使用Form Integration Encryption Password作为密钥和IV(RijndaelManaged)加密Crypt字段(包含所有必需的值) 实例化HttpWebRequest(KeepAlive=false;Method=“POST”(也尝试获取)) SecurityProtocol=Tls1
几乎没有想法了。你能给我们看看你的代码吗?不看到它就无法调试。请给我们一个很好的解释,看起来SagePay/.net的知识非常缺乏,但谢天谢地,我可能已经发现了这个问题。我使用完全相同的代码创建了一个控制台应用程序,它使用.NET4.0框架工作,而web应用程序使用.NET4.5。控制台应用程序是从我的本地桌面运行的,而该应用程序是从Windows web服务器运行的。强烈建议问题在于SagePay/.net 4.5。当我在.NET4.0中构建web应用程序并查看会发生什么时,就会证明这一点。您得到的错误来自于您的代码,而不是他们的代码。文档非常清楚如何发送和接收到他们的服务器,我从来没有遇到过问题。正如我在评论中指出的,完全相同的代码可以通过从我的桌面运行的控制台应用程序工作。注:“完全相同的代码”。因此,问题可能出在框架/sagepay或服务器上;请保留对主题的评论和建设性意见。
string valsToCrypt = "VendorTxCode= ....etc
using (RijndaelManaged myRijndael = new RijndaelManaged())
{
var passToBytes = System.Text.Encoding.UTF8.GetBytes("pass val");
myRijndael.Key = passToBytes;
myRijndael.IV = passToBytes;
// Encrypt the string to an array of bytes.
byte[] encrypted = EncryptStringToBytes(valsToCrypt, myRijndael.Key, myRijndael.IV);
string cryptEncrypted = "";
foreach (byte item in encrypted)
{
cryptEncrypted += item;
}
string uri = "https://test.sagepay.com/gateway/service/vspform-register.vsp";
uri += "?VPSProtocol=3.00&TxType=PAYMENT&Vendor=vendorname&Crypt=@" + cryptEncrypted;
var webRequest = (HttpWebRequest)WebRequest.Create(uri);
webRequest.KeepAlive = false;
webRequest.Method = "POST";