我正在将此库用于孟加拉国的支付网关。https://github.com/Rahim373/Arts.SslCommerze 但是,在控制器中等待iis无限时间的代码。我检查了提琴手是否正确地将响应从服务器发送到我的机器。它正在到达。但是异步功能没有执行。 我的代码是:
public ActionResult About()
{
string customerName = "Fahim Abrar";
string customerEmail = "fahimabrar13@gmail.com";
string customerPhone = "+8801853912845";
string transactionId = "45c2ffc4d";
string successUrl = "http://fahimabrar.com";
string failUrl = "http://fahimabrar.com";
string cancelUrl = "cancelUrl";
decimal amount = 50;
Customer customer = new Customer(customerName, customerEmail,
customerPhone);
EmiTransaction emiTransaction = new
EmiTransaction(isEmiEnabled: false);
Trasnaction trasnaction = new Trasnaction(amount,
transactionId, successUrl, failUrl,
cancelUrl, emiTransaction, customer);
SslRequest.GetSessionAsync(trasnaction).ConfigureAwait(continueOnCapturedContext: false);
var session = SslRequest.GetSessionAsync(trasnaction).Result;
string s = session.FailedReason;
ViewBag.Message = s;
//"Your application description page.";
return View();
}
此处var session = SslRequest.GetSessionAsync(trasnaction).Result; 这条线造成了僵局。
答案 0 :(得分:3)
.Result
可能导致死锁。
设置方法async
并使用await
,例如
public async Task<ActionResult> About()
{
string customerName = "Fahim Abrar";
string customerEmail = "fahimabrar13@gmail.com";
string customerPhone = "+8801853912845";
string transactionId = "45c2ffc4d";
string successUrl = "http://fahimabrar.com";
string failUrl = "http://fahimabrar.com";
string cancelUrl = "cancelUrl";
decimal amount = 50;
Customer customer = new Customer(customerName, customerEmail,
customerPhone);
EmiTransaction emiTransaction = new
EmiTransaction(isEmiEnabled: false);
Trasnaction trasnaction = new Trasnaction(amount,
transactionId, successUrl, failUrl,
cancelUrl, emiTransaction, customer);
var session = await SslRequest.GetSessionAsync(trasnaction);
string s = session.FailedReason;
ViewBag.Message = s;
//"Your application description page.";
return View();
}