【发布时间】:2021-10-02 10:35:27
【问题描述】:
我有一个执行存储在 SSISDB 中的 SSIS 包的 SQL Server 代理作业。其中一项任务是执行控制台应用程序。控制台应用程序连接到组织外部托管的 Web 服务。该作业的任务配置了一个代理帐户,该代理帐户是一个域帐户。
当代理(域)帐户登录到托管作业和包的服务器时,手动或按计划执行作业都可以正常工作。
但是当代理账号注销时,控制台应用会抛出如下错误:
内部异常::System.Net.Sockets.SocketException (0x80004005): 连接尝试失败,因为连接方一段时间后没有正确响应,或者连接失败,因为连接主机没有响应109.205.54.105 :443 在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 在 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception&例外)
代理帐户在本地管理员组中。我尝试将帐户添加到分布式 COM 用户,但这没有帮助。拥有 Web 服务的供应商表示日志中没有任何问题。
是什么导致了这个错误?如何解决?非常感谢您的帮助。
更新
我已与安全团队核实过,似乎当应用程序登录时,流量会通过代理。当应用帐号被注销时,它会直接撞上防火墙并断开连接。
到目前为止我尝试过但没有帮助的事情:
-
在 IE 中为应用程序帐户配置代理
-
注册表中的代理配置
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 设置 MigrateProxy=1 代理启用=1 ProxyServer=列出的代理服务器
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections DefaultConnectionSettings=列出的代理服务器 SavedLegacySettings=列出的代理服务器
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections WinHTTPSettings=通过运行以下命令列出的代理服务器
netsh winhttp 导入代理源=ie
导致错误的事情:
- 如下设置 app.config 时出现错误
<system.net>
<defaultProxy>
<proxy usesystemdefault="true" />
</defaultProxy>
</system.net>
.NET 运行时
应用程序:iPersonel.SendData.exe 框架版本:v4.0.30319 说明:进程因未处理的异常而终止。 异常信息:System.Configuration.ConfigurationErrorsException 在 System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(布尔值) 在 System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(System.Configuration.ConfigurationSchemaErrors) 在 System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors() 在 System.Configuration.ClientConfigurationSystem.EnsureInit(System.String)
异常信息:System.Configuration.ConfigurationErrorsException 在 System.Configuration.ClientConfigurationSystem.EnsureInit(System.String) 在 System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(System.String) 在 System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(System.String) 在 System.Configuration.ConfigurationManager.get_AppSettings() 在 SendData.Log.Logger..cctor()
异常信息:System.TypeInitializationException 在 SendData.Log.Logger.GetOrRegister() 在 SendData.Program.Main(System.String[])
应用程序错误
错误应用程序名称:iPersonel.SendData.exe,版本:1.0.0.0,时间戳:0xad1edd6c 错误模块名称:KERNELBASE.dll,版本:10.0.17763.2028,时间戳:0xc13cbc1f 异常代码:0xe0434352 故障偏移:0x00123522 错误进程ID:0x25f4 错误应用程序启动时间:0x01d788539cbe6d32 错误的应用程序路径:D:\PLPayrollInterface\ConsoleApp\iPersonel.SendData.exe 错误模块路径:C:\Windows\System32\KERNELBASE.dll 报告 ID:a2658be2-a18b-417f-ba29-6c525332b0cd 故障包全名: 错误的包相关应用程序 ID:
.NET 运行时错误是否表明 app.config 文件中有问题?项目编译没有错误。
【问题讨论】:
-
DCOM 与 SQL Server 和 SSIS 有什么关系?随意尝试只能导致问题。在这种情况下,错误清楚地表明与 HTTP 服务的连接超时。这可能与 SQL Server 无关,
109.205.54.105的服务是否已启动并正在运行?它支持HTTPS吗?443是 HTTPS 使用的端口。如果服务不支持,或者某些防火墙阻止了它,您将无法连接 -
除此之外,无法猜测为什么尝试通过 SSL 连接到服务的控制台应用程序会超时。没有代码,没有来自客户端的日志,最重要的是,没有服务。你能连接到那个服务吗?它甚至是 HTTP 服务吗?
-
谢谢,@PanagiotisKanavos。这是一个非生产环境,我正在尝试不同的事情,因为我没有想到其他任何事情。该服务已在上述地址 443 下启动并运行,并且在手动执行作业时工作正常。我的观察是当应用程序帐户从服务器注销时发生错误。我已将我的人事帐户配置为代理,并且发生了相同的行为。
-
这可能意味着 Windows 防火墙正在阻止访问。
-
您是否在事件日志查看器中查看过在您的作业运行期间是否记录了任何应用程序或系统错误? Web 服务是否需要客户端证书身份验证?
标签: .net sql-server web-services ssis socketexception