[英]operation is not supported on this platform - problem with RSACryptoServiceProvider in dot net core 2
最近我不得不在 dot net core 2.2 中使用 RSACryptoServiceProvider。
我的 GetSign() 方法中的 RSA.FromXmlString() 有問題。 當我從 UnitTest 調用我的 Action 時一切正常,但是當我通過 Post 方法從 PostMan 調用它時,我在rsa.FromXmlString("XXX")上得到以下錯誤:
此平台不支持操作
我的單元測試:
[Fact]
public void TestToken()
{
var contoller2 = new BankPaymentController();
contoller2.GetToken();
}
//My controller
[EnableCors("CorsPolicy")]
[HTTPPOST]
public IActionResult GetToken()
{
BankingInputParam model2 = new BankingInputParam();
var token = PasargadBank.CallPaymentMethod(model2);
return Ok(token);
}
這是我調用內部控制器的內部方法
//This is CallPaymentMethod
public static string CallPaymentMethod(BankingInputParam model)
{
PasargadBank pasargadbank = new PasargadBank();
var sendingData = pasargadbank.CreateTextArrayInput(model);
var content = new StringContent(sendingData, Encoding.UTF8, "application/json");
var request = new HttpRequestMessage
{
RequestUri = new Uri("XXXXXXXXXX"),
Method = HttpMethod.Post,
Content = content
};
MyClass instancemyclass = new MyClass();
var aaa = instancemyclass.GetSign(sendingData);
request.Headers.Add("Sign", pasargadbank.GetSign(sendingData));
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.SendAsync(request).Result;// requestMessage).Result;
return Encoding.UTF8.GetString(response.Content.ReadAsByteArrayAsync().Result);
}
這是我有問題的 GetSignt() 方法
public string GetSign(string data)
{
var cs = new CspParameters {
KeyContainerName = "PaymentTest"
};
var rsa = new RSACryptoServiceProvider(cs) {
PersistKeyInCsp = false
};
rsa.Clear();
rsa = new RSACryptoServiceProvider();
byte[] signMain = rsa.SignData(Encoding.UTF8.GetBytes(data), new SHA1CryptoServiceProvider());
string sign = Convert.ToBase64String(signMain);
return sign;
}
FromXmlString
直到.NET Core 3.0才在 .NET Core 中完全實現。 由於 .NET Core 2.2 不受支持,您應該更新到 .NET Core 3.1 並且它應該可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.