Core 5.0 项目引用 Framework 4.7.2 项目并抛出'System.Security.Cryptography.SHA256Cng' 错误
Core 5.0 project references Framework 4.7.2 project and throws'System.Security.Cryptography.SHA256Cng' error
框架项目是 运行 一种获取 AAD 到 dynamics 365 crm 的访问令牌的方法,returns 它作为请求 header。来自 运行 GetAuthHeader 的错误是
One or more errors occurred. (Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.)
我已经尝试研究它,我想知道我是否使用了错误的框架版本?任何帮助是极大的赞赏。下面显示的两种方法都使用 Framework 4.7.2.
我正在使用 PowerApps-Samples,特别是位于 https://github.com/microsoft/PowerApps-Samples/tree/master/cds/webapi/C%23/CDSWebApiService
的 CDSWebApiService
下面的方法在调用时抛出错误:
private AuthenticationHeaderValue GetAuthHeader()
{
AuthenticationResult authResult;
if (_credential == null)
{
authResult = _authContext.AcquireTokenAsync(
serviceUri, clientId,
new Uri(redirectUrl),
new PlatformParameters(PromptBehavior.Auto)).Result;
}
else
{
authResult = _authContext.AcquireTokenAsync(serviceUri, clientId, _credential).Result;
}
return new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
}
调用它的方法如下所示。对上面 GetAuthHeader 的调用是引发异常的原因:
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
try
{
request.Headers.Authorization = GetAuthHeader(); //This throws the error
}
catch (Exception ex)
{
throw ex;
}
return base.SendAsync(request, cancellationToken);
}
简而言之,.NET Core 不支持它,您可能应该更新您的 .NET version/runtime。
框架项目是 运行 一种获取 AAD 到 dynamics 365 crm 的访问令牌的方法,returns 它作为请求 header。来自 运行 GetAuthHeader 的错误是
One or more errors occurred. (Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.)
我已经尝试研究它,我想知道我是否使用了错误的框架版本?任何帮助是极大的赞赏。下面显示的两种方法都使用 Framework 4.7.2.
我正在使用 PowerApps-Samples,特别是位于 https://github.com/microsoft/PowerApps-Samples/tree/master/cds/webapi/C%23/CDSWebApiService
的 CDSWebApiService下面的方法在调用时抛出错误:
private AuthenticationHeaderValue GetAuthHeader()
{
AuthenticationResult authResult;
if (_credential == null)
{
authResult = _authContext.AcquireTokenAsync(
serviceUri, clientId,
new Uri(redirectUrl),
new PlatformParameters(PromptBehavior.Auto)).Result;
}
else
{
authResult = _authContext.AcquireTokenAsync(serviceUri, clientId, _credential).Result;
}
return new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
}
调用它的方法如下所示。对上面 GetAuthHeader 的调用是引发异常的原因:
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
try
{
request.Headers.Authorization = GetAuthHeader(); //This throws the error
}
catch (Exception ex)
{
throw ex;
}
return base.SendAsync(request, cancellationToken);
}
简而言之,.NET Core 不支持它,您可能应该更新您的 .NET version/runtime。