C# 端口不为';行不通

C# 端口不为';行不通,c#,sql-server,entity-framework,connection-string,C#,Sql Server,Entity Framework,Connection String,场景:具有默认设置和连接端口(1433)的SQL Server 2014开发人员,具有实体框架6的C# 在我的C#应用程序中使用带有EF6的SQL Server时,以下连接字符串就像一个符咒: Data Source=localhost;Initial Catalog =... 但此连接字符串失败: Data Source=localhost,1433;Initial Catalog =... 是的,这是正确的端口 在SQL Server的配置中,我通过激活TCP/IP协议找到了一个解决方案

场景:具有默认设置和连接端口(1433)的SQL Server 2014开发人员,具有实体框架6的C#

在我的C#应用程序中使用带有EF6的SQL Server时,以下连接字符串就像一个符咒:

Data Source=localhost;Initial Catalog =...
但此连接字符串失败:

Data Source=localhost,1433;Initial Catalog =...
是的,这是正确的端口

在SQL Server的配置中,我通过激活TCP/IP协议找到了一个解决方案,但是,由于它是默认端口,它不应该像其他没有端口的连接字符串一样工作吗?即使TCP/IP已停用(默认情况下)


谢谢

如果您像OP一样指定端口,那么这两条注释是错误的

您必须启用TCP/IP的原因是,您必须启用TCP/IP,服务器才能侦听端口(默认或其他)


如果TCP/IP处于打开状态,则服务器默认为端口1433。如果TCP/IP未打开,则根据定义,它无法侦听任何端口。

@lad2025您确实使用
,而不是
。它可能首先使用
命名管道进行通信,但在第二个实例中,由于您指定了一个端口,它将强制它使用
tcp/ip
。如果没有启用tcp/ip,客户端甚至无法连接到本地主机<代码>本地主机
本身起作用,因为使用了不同的协议,很可能是共享内存。默认情况下只启用共享内存,这只允许从本地计算机即localhost进行连接。将本地主机更改为IP地址也会使其无法工作。非共享内存访问需要TCP/IP协议。不知道为什么它会被停用,也许它是SQL Server开发人员版本的默认设置。无论如何,谢谢!根据我的经验,开发版本默认为禁用TCP/IP。标准版本也一样,IIRC。谢谢,在评论中发现,没有端口的连接字符串通过共享内存访问连接到数据库,您是对的,要侦听特定端口,甚至从另一台主机连接,必须激活TCP/IP协议(在指定端口时使用)。