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

iyfjxgzm  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(296)

我正在Windows10的共享文件夹中运行一些自编的winforms.NET3.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代码,所以它可以从网络共享运行,但是我更新了完全信任,它仍然崩溃(通常如果我没有执行完全信任,它崩溃的时间会更早)。

ecbunoof

ecbunoof1#

我们有一些关于这个问题的信息:
windows 10 update 1803未打开smbv1共享上可执行文件的网络连接(如windows server 2003)
您可以尝试将程序移动到与smbv2或smbv3兼容的服务器上进行检查。

xlpyo6sf

xlpyo6sf2#

微软于2018年6月26日在针对基于x64的系统(kb4284848)(os build 17134.137)的windows 10版本1803的2018-06累积更新中修复了此问题。
其中一个修复是相关的:
解决了某些用户在使用smbv1协议从共享文件夹访问文件或运行程序时可能收到错误的问题。错误为“提供了无效参数”。
此解决方案和其他解决方案将在中讨论:
https://blog.mertech.com/windows-10-version-1803-breaks-some-shared-folder-applications

gcmastyq

gcmastyq3#

我对此进行了测试-如果服务器只允许smbv1(max),则无法从共享的可执行文件创建任何连接。如果smb是v2,则一切正常。

相关问题