SqlConnection.Open()挂起在.NET核心控制台项目中,但在常规C#控制台项目中连接良好

SqlConnection.Open()挂起在.NET核心控制台项目中,但在常规C#控制台项目中连接良好,c#,sql,.net-core,C#,Sql,.net Core,我的程序使用以下代码连接到C#控制台项目中的服务器: public static void Main(string[] args) { Console.WriteLine("Hello World!"); System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();

我的程序使用以下代码连接到C#控制台项目中的服务器:

public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            System.Data.SqlClient.SqlConnection conn = 
                new System.Data.SqlClient.SqlConnection();

            string connectionString = "Data Source=IPOfServer;" +
                "Initial Catalog=nameOfDatabase;"+
                "User ID=USERNAME;" +
                "Password=PASSWORD";

            conn.ConnectionString = connectionString;

            try
            {
                Console.WriteLine("Before Connection");
                conn.Open();
                Console.WriteLine("Connection Open");
                conn.Close();
                Console.WriteLine("Connection Closed");
            }
            catch (Exception ex)
            {
                Console.WriteLine(String.Format("Can't Connect; Error:{0}", ex.Message));
            }
        }
和产出:

Hello World!
Before Connection
Connection Open
Connection Closed
当我在.NET Core控制台项目中尝试完全相同的代码时,我的输出是:

Hello World!
Before Connection
但是程序从来不会出错或结束。它永远挂着

我正在使用包
System.Data.Common
System.Data.SqlClient

我正在尝试连接的是MSSQL 2005服务器

我做错了什么/如何使用.NET核心控制台项目连接到服务器?我考虑过使用
EntityFramework
,但不希望使用它,除非这是我唯一的选择。

尝试以下方法:

在Visual Studio 2015中打开现有解决方案。现在,添加新的客户端 解决方案中的Library.NET核心项目

通过解决方案上下文菜单打开添加新项目屏幕>>添加>> 新建项目或文件>>新建>>项目。选择类库(.NET) 核心)通过已安装的>>模板>>Visual C#>>.NET创建模板 核心。将项目命名为“WebApplicationCore.NetCore.DataAccess”。设置 合适的位置为“C:\ASP.NET Core\Welcome To.NET Core 1.0\ ASP.NET Core”(默认情况下选择为解决方案根目录)。点击OK按钮

它将创建一个新的类库项目

使用以下方法之一添加对Microsoft.EntityFrameworkCore.SqlServer的引用: 以下方法

通过工具打开包管理器控制台>>NuGet数据包管理器>> 软件包管理器控制台并运行安装命令“安装软件包 Microsoft.EntityFrameworkCore.SqlServer“用于 WebApplicationCore.NetCore.DataAccess项目

通过WebApplicationCore.NetCore.DataAccess打开NuGet Manager 参考上下文菜单>>参考>>管理NuGet包。在里面 浏览选项卡搜索“Microsoft.EntityFrameworkCore.SqlServer”和 安装

将Class1重命名为BaseDataAccess,并将所需的实现添加到 连接到SQL Server数据库


当我连接到较新版本的sql server时,我的程序会运行,很明显Core无法连接到MSSQL 2005。谢谢您提供的解决方案。

这两个程序是否在同一台机器上运行?默认连接超时。如果手动将其设置为较小的值,会发生什么情况?我将尝试的下一步是获取类似或的程序,并查看两个端点之间的连线上发生了什么。检查并查看它是否尝试连接。我现在能想到的唯一可能的原因是防火墙规则,它允许您的第一个程序通过,但不允许第二个程序通过。请尝试连接到较新版本的sql server。您没有做错什么,可能是与特定版本的sql server相结合的错误。@TcKs我的程序在连接到较新版本的sql server时运行,显然Core无法连接到MSSQL 2005。谢谢你的帮助!抱歉,stackoverflow应用程序在^^“周围安装了错误,因此您似乎无法像通常的方式连接到sql server。”这与stack overflow问题链接的公认答案所说的完全相反。没有公认的答案,但确定:)该解决方案似乎是一种解决方法,因为我不需要在我的project.json中添加我的名称空间。我不明白如果你或op甚至没有尝试遵循csharpcorner上的教程,为什么你会否决我的答案。我很想添加这些链接作为注释,但这与将
System.Data.dll
添加到普通的.NET项目中是不一样的。唯一不同的是,csproj在.NET内核中默认不包含它,但这会导致编译器错误,而不是运行时挂起。此外,否决票是因为张贴了一份声明。