Windows 10上的MySql异常:带有ErrorCode 10053的SocketException

时间:2016-10-12 12:52:14

标签: c# mysql visual-studio-2013 windows-10-desktop

我有一个小应用程序,它试图将数据从MySql数据库导入SQL Express数据库。这在Windows 10上的Visual Studio 2013中正在开发中,使用Entity Framework Database First来模拟MySql数据库,连接到它并检索数据。

该软件正在开发TDD,所以我有一个NUnit测试,它检查应用程序是否可以成功连接到MySql数据库并从中检索数据。一个测试非常简单,如下:

[Test]
public void MySqlContext_CanConnectToLegacyDb_OpensWithoutErrors()
{
  // Arrange
  using (MySqlContext legacyRepository = new MySqlContext())
  {
    bool exceptionThrown = false;
    List<string> exceptionMessages = new List<string>();

    // Act
    try
    {
      legacyRepository.Database.Connection.Open();
    }
    catch (Exception ex)
    {
      exceptionThrown = true;
      exceptionMessages.Add(ex.Message);
      while (ex.InnerException != null)
      {
        ex = ex.InnerException;
        exceptionMessages.Add(ex.Message);
        if (ex is SocketException)
        {
          exceptionMessages.Add(string.Format("ErrorCode={0}", (ex as SocketException).ErrorCode));
        }
      }
    }

    // Assert
    StringBuilder errMsg = new StringBuilder("Exception was thrown: ");
    foreach(string em in exceptionMessages)
    {
      errMsg.AppendLine(em);
    }
    Assert.IsFalse(exceptionThrown, errMsg.ToString());
  }
}

IE中。它只是检查它是否可以打开与MySql数据库的连接而不会抛出任何异常。

此测试失败。尝试打开MySql数据库会产生以下异常:

  

结果消息:抛出异常:无法从中读取数据   传输连接:已建立的连接被中止   主机上的软件。已建立的连接已中止   由主机中的软件ErrorCode = 10053

预期:错误   但是:真的

MySql与此测试及其支持的应用程序在同一台计算机上运行。它由机器上的其他软件使用,包括MySql Workbench和同一Visual Studio实例的服务器资源管理器,没有任何连接问题。我检查并重新检查了用于访问数据库的连接字符串,它与Entity Framework在为数据库生成模型时生成的连接字符串相同。

基于我在线阅读的这个例外情况,我已经对Windows 10上的所有安全设置进行了全面检查,我查看了MySql日志和其他日志,包括Windows事件日志。我在任何日志中都找不到任何暗示正在中止与MySql的连接的内容。当有问题的代码行失败时,Fiddler没有显示任何内容,所以我看不到任何试图通过localhost / 127.0.0.1连接与MySql交谈的证据。

我已尝试禁用我可以找到的设置,并禁用BitDefender反病毒软件,但这些操作都不会对此错误产生任何影响。

我还能检查什么,找出导致此错误的原因?它可能是Windows中的安全设置吗?

更多信息: 我在其他地方读到的有关EF Database First的内容提示,我尝试从我的解决方案中删除MySql模型并重新添加它,看看这是否改变了连接字符串中的任何内容。这一次,当我在“选择您的数据连接”屏幕(第3个屏幕)上单击“下一步”时,ADO.NET实体数据模型向导将终止,没有任何错误。执行此操作时,将关闭与MySql数据库的服务器资源管理器连接(当图标显示绿色插件时,图标显示红叉)。

我现在认为在我的解决方案的某个地方存在一些配置问题。但是如何诊断问题呢?当向导消失时,我没有收到任何错误消息,并且“输出”窗口没有显示任何内容。

另一次更新: 我认为问题可能是MySql配置问题。对于MySql,我似乎有2个或者可能有3个“my.ini”设置文件,我怀疑MySQL Workbench维护的那个文件不是服务器实际用于其配置的文件。为什么我这么想?因为,当我为默认情况下未记录的各种项目启用日志记录时(为什么不记录?),行为没有发生变化。 MySql没有开始写日志文件 - 直到我将实用程序(C:\Program Files\MySQL\MySQL Server 5.5\my.ini)更改的my.ini文件复制到C:\ProgramData\MySQL\MySQL Server 5.5中的文件上。在我这样做之后,MySQL开始记录东西,但后来我无法通过Workbench正确连接到服务器。

我正在进一步调查,并将发布我在此处找到的内容,以防其他人遇到类似问题。

0 个答案:

没有答案