解密操作失败,请参见内部异常

时间:2019-02-21 11:20:02

标签: api .net-core

我正在使用Visual Studio 2017和.NET Core 2.x.我已经建立了两个项目。第一个是后端API(https://localhost:51637)。第二个是前端网站(https://localhost:54146)。前端网站调用后端API。它们都在我的计算机上本地运行。

问题是,当前端尝试向API发送请求时,我得到了这个证据

info: Microsoft.AspNetCore.Server.Kestrel[20]
    Connection id "0HLKNTHFLCEA9" request processing ended abnormally.
System.IO.IOException: The decryption operation failed, see inner exception. ---> System.ComponentModel.Win32Exception: An unknown error occurred while processing the certificate
    --- End of inner exception stack trace ---
    at System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter adapter, Memory`1 buffer)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal.AdaptedPipeline.ReadInputAsync(Stream stream)
    at System.IO.Pipelines.PipeCompletion.ThrowLatchedException()
    at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
    at System.IO.Pipelines.Pipe.ReadAsync(CancellationToken token)
    at System.IO.Pipelines.Pipe.DefaultPipeReader.ReadAsync(CancellationToken cancellationToken)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.BeginRead(ValueTask`1& awaitable)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 application)

2 个答案:

答案 0 :(得分:2)

正在开发的两个.NET Core应用程序(其中.NET应用程序是您的自托管网站或API,而另一个是.NET客户端控制台应用程序或其他)之间也可能发生此错误。

服务器端错误与上述OP转储相同,客户端错误为:

  

System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常。 ---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。

运行此命令以信任开发证书并解决问题。

dotnet dev-certs https -t -v

更多信息在这里。

https://www.hanselman.com/blog/DevelopingLocallyWithASPNETCoreUnderHTTPSSSLAndSelfSignedCerts.aspx

答案 1 :(得分:0)

结果是,我的浏览器(Firefox)不信任该API证书。要解决这个问题

  1. 在API项目wwwroot文件夹中创建一个空白的“ index.html”页面(确保将API项目设置为提供静态文件)
  2. 运行API项目
  3. 将浏览器指向index.html页面
  4. 将显示警告,提示“您的连接不安全”
  5. 点击“高级”和“添加例外”

前端网站现在将能够成功调用后端API。