首页 > 解决方案 > 与 Azure 逻辑应用的连接已被远程主机关闭

问题描述

一月初,我开发了一个非常简单的逻辑应用程序,它以 HTTPS 触发器作为入口点。此逻辑应用只接受一个 GET 请求,向我发送一封电子邮件,然后向客户端返回 200 OK 响应。

我将它与一个 VSTO 插件结合使用,该插件在每次安装时都会调用逻辑应用程序;让我有成长的感觉。自 2 月初以来我没有收到任何电子邮件,直到最近才发现这是因为每次 VSTO 加载项尝试调用触发器时,它现在都会返回“底层连接已关闭:发送时发生意外错误”例外:

System.AggregateException:发生一个或多个错误。

---> System.Net.Http.HttpRequestException: 发送请求时出错。

---> System.Net.WebException:底层连接已关闭:接收时发生意外错误。

---> System.IO.IOException: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。

---> System.Net.Sockets.SocketException:在 System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) 的 System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) 的远程主机强制关闭了现有连接--- 内部异常堆栈跟踪结束 --- System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) 在 System.Net.Connection.ReadCallback(IAsyncResult asyncResult) --- 内部异常堆栈跟踪结束 ---在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) --- 内部异常堆栈跟踪结束 --- --- 内部异常堆栈跟踪结束 ---在 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) 在 ExcelAddIn...

---> (Inner Exception #0) System.Net.Http.HttpRequestException: 发送请求时出错。

---> System.Net.WebException:底层连接已关闭:接收时发生意外错误。

---> System.IO.IOException: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。

---> System.Net.Sockets.SocketException:在 System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) 的 System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) 的远程主机强制关闭了现有连接--- 内部异常堆栈跟踪结束 --- System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) 在 System.Net.Connection.ReadCallback(IAsyncResult asyncResult) --- 内部异常堆栈跟踪结束 ---在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) --- 内部异常堆栈跟踪结束 --- <---

VSTO 插件中的代码自 1 月份以来没有更改,逻辑应用程序也没有更改。它对所有客户都运行良好,但现在对他们中的任何一个都不起作用。更令我惊讶的是,Logic App 日志也没有显示任何失败的调用。

我该如何调试呢?

标签: .netvstohttpwebrequestazure-logic-apps

解决方案


如果您使用的是 .Net 4.0,则未定义 SecurityProtocolType.Tls11 和 SecurityProtocolType.Tls2,因此您可以使用下面的硬编码值。

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;


推荐阅读