一台主机上的两个 IIS 托管应用程序之间的通信 - 无法建立连接

问题描述 投票:0回答:1

我正在开发一个项目,该项目需要一个网站(Blazor 服务器)和一个服务托管在 Windows Server 2022 上的同一 IIS 10 上。

两个应用程序都在自己的应用程序池标识下运行。

网站使用 gRPC 生成的客户端连接到服务以检索数据。 服务器主机可从内联网访问并为网站或服务提供服务。

当我尝试使用 IIS Express 从 Visual Studio 托管我的网站并连接到 IIS 上的托管服务时,一切都工作正常。

但是一旦我部署应用程序并将其托管在 IIS 上,我就会收到以下错误:

fail: Grpc.Net.Client.Internal.GrpcCall[6] Error starting gRPC call. System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.. ---> System.Net.Sockets.SocketException (10054): An existing connection was forcibly closed by the remote host. --- End of inner exception stack trace --- at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(Int16 token) at System.Net.Security.SslStream.<FillHandshakeBufferAsync>g__InternalFillHandshakeBufferAsync|189_0[TIOAdapter](TIOAdapter adap, ValueTask
1 个任务,Int32 minSize) 在 System.Net.Security.SslStream.ReceiveBlobAsync[TIOAdapter](TIOAdapter 适配器)`

我们已经尝试了很多东西,比如更改证书、预先在客户端加载证书等等。

出于测试目的,我尝试在程序启动时从网站上对服务执行简单的 GET,这会引发相同的异常。看来,在 https 下,同一 IIS 上的两个托管 .NET 应用程序之间的通信是不可能的。

我不知道在这里到底要提供哪个代码,因为它是简单的 GET 甚至不起作用。 gRPC 确实在“/”上有 GET 的映射,因此它通常可以正常工作。

如果我遗漏了某些内容,请随时提出问题或索取代码或某些信息。 如有任何帮助,我们将不胜感激!

c# grpc blazor-server-side iis-10
1个回答
0
投票

我使用 Windows Server 2022 Standard 创建了自己的 VM,并使用有效的证书和绑定在同一网站上托管服务和 Web 应用程序。而且效果很好。我只需使用端点的 IP 地址,因为机器无法解析其自己的主机名。无需调整主机文件,因为该项目稍后将托管在托管环境中。

问题似乎是,我要使用的项目的虚拟机受到另一个 IT 的限制和管理。

如果有人遇到同样的问题,请尝试将其托管在您可以信任的环境中。

回答评论区的问题: @戴玉蓉 我的服务使用 gRPC 并托管在 IIS 上。要求如下: https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis 明文 - 如上所述,IIS 目前仅支持基于 TLS 的 HTTP/2。同样,IIS 将回退到 HTTP/1.1。 我根据您的建议进行了测试,如果 IIS 没有回退到 http/1.1,连接将是有效的

感谢您抽出宝贵时间提供帮助!

© www.soinside.com 2019 - 2024. All rights reserved.