在Windows 10更新1803之后,我的程序在从网络共享运行时无法打开套接字

时间:2018-05-03 12:48:17

标签: c# mysql sockets ssh windows-10

我正在从Windows 10的共享文件夹中运行一些自编写的Winforms .net 3.5应用程序。

一切正常,但在上一次大更新(1803)之后,应用程序不再启动。

似乎程序在尝试打开套接字时崩溃了。第一个问题是访问数据库时遇到以下异常:

2018-05-03 14:36:32,314 [1] ERROR NHibernate.Transaction.AdoTransaction [(null)] - Begin transaction failed
MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts. ---> System.Net.Sockets.SocketException: invalid argument
   at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
   at MySql.Data.Common.MyNetworkStream.CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, Boolean unix)
   at MySql.Data.Common.MyNetworkStream.CreateStream(MySqlConnectionStringBuilder settings, Boolean unix)
   at MySql.Data.Common.StreamCreator.GetStream(MySqlConnectionStringBuilder settings)
   at MySql.Data.MySqlClient.NativeDriver.Open()

我试图解决这个问题,但是当从网络共享启动程序时,甚至访问SSH服务器也不起作用:

2018-05-03 14:30:30,654 [1] ERROR WinForms.SpringApplication [(null)] - Main Handler
Tamir.SharpSsh.jsch.JSchException: System.Net.Sockets.SocketException: invalid argument
   at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
   at Tamir.SharpSsh.java.net.Socket..ctor(String host, Int32 port)
   at Tamir.SharpSsh.jsch.Util.createSocket(String host, Int32 port, Int32 timeout)
   bei Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout)
   bei Tamir.SharpSsh.SshBase.ConnectSession(Int32 tcpPort)
   bei Tamir.SharpSsh.SshBase.Connect(Int32 tcpPort)
   bei Tamir.SharpSsh.SshBase.Connect()

当我在本地复制目录时,程序运行正常。

当我从网络共享启动此程序时,为什么Windows阻止访问套接字的任何想法?

我知道信任.net代码,因此它可以从网络共享运行,但我已经更新了完全信任并且它仍然崩溃(如果我没有完全信任,通常它会更早崩溃)

3 个答案:

答案 0 :(得分:6)

我们有一些关于此问题的信息:

  

Windows 10更新1803无法打开网络连接    SMBv1共享上的可执行文件<(作为Windows Server 2003)

您可以尝试将程序移至SMBv2或SMBv3兼容服务器进行检查。

答案 1 :(得分:3)

Microsoft于2018年6月26日在2018-06 Cumulative Update for Windows 10 Version 1803 for x64-based Systems (KB4284848)(OS Build 17134.137)中修复此问题。

其中一个修复是相关的:

  

解决了使用SMBv1协议访问文件或从共享文件夹运行程序时某些用户可能收到错误的问题。错误是“提供了无效参数”。

这个和其他解决方法在以下讨论:

https://blog.mertech.com/windows-10-version-1803-breaks-some-shared-folder-applications

答案 2 :(得分:1)

我对此进行了测试 - 如果服务器仅允许SMBv1(最大),则无法从共享的可执行文件创建任何连接。如果SMB是v2,那么一切正常。