.net - 与 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 日志也没有显示任何失败的调用。
我该如何调试呢?
解决方案
如果您使用的是 .Net 4.0,则未定义 SecurityProtocolType.Tls11 和 SecurityProtocolType.Tls2,因此您可以使用下面的硬编码值。
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
推荐阅读
- flutter - Flutter中如何根据json响应动态更新Listview
- c# - 将已经实例化的属性传递给 using 语句是一种好习惯吗?
- java - 优化:while (true)
- java - Java - 从方法返回不同的类并使用类的特定功能
- java - 多线程:我们如何使用 Java 进行时间切片?
- node.js - 如何在 MEAN 堆栈应用程序中从后端到前端通信?
- java - 无法在 Windows 上使用 kafka-run-class.bat 运行类
- javascript - 更改 window.location.hash 会在历史记录中创建条目,但不会影响 chrome 后退按钮
- javascript - 如何在 JQuery 或 Javascript 中获取父元素 ID
- javascript - 如何动态添加网格插件