实体框架基础提供程序在Open上失败

Use*_*384 33 c# entity-framework

下面是我的连接字符串:

的connectionString ="元数据= RES://*/EDMX.Test.csdl | RES://*/EDMX.Test.ssdl | RES://*/EDMX.Test.msl;提供商= System.Data.SqlClient的;提供者connection string ="Data Source = home_computer; Initial Catalog = db_Test; Persist Security Info = True; User ID = testUser; Password = $ 1234; MultipleActiveResultSets = True""

这是程序卡住的代码:

EDMX.TestingEntity context = new EDMX.TestingEntity();

var query = from t in context.User
            where t.UserName == _userName
            select t;
Run Code Online (Sandbox Code Playgroud)

运行上面的代码后,我检查变量查询并发现异常

底层提供程序在Open上失败.

我检查过:

  1. 服务器和计算机之间的连接正常
  2. 我可以使用用户名testuser和密码$ 1234登录数据库
  3. 我已检查数据库(SQL Server)中的安全设置是否已授予testUser权限

为什么会发生这种异常?我正在使用.net 4.5


添加:

我再次尝试,查看内部异常,它是:建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

我知道这可能是一个网络问题,但我关闭了服务器和我的电脑的防火墙,并再次尝试,但仍然没有成功..


刚刚将连接字符串复制到一个程序来测试这个连接,它运行良好..


我只是回滚所有更改并再次测试并且它有效

Ram*_*man 47

似乎是一个连接问题.您可以使用数据链接属性来查找连接是否正常.请执行下列操作:

  1. 创建一个空白的记事本并将其重命名为"X.UDL"
  2. 双击打开它
  3. 在"连接"选项卡下,选择服务器名称/输入名称使用正确的凭据和DB
  4. 单击"确定"保存.

现在在记事本中打开文件并比较连接字符串属性.


小智 10

  1. 在程序和文件中搜索"组件服务"
  2. 转到服务
  3. 查找"分布式事务处理协调器"服务
  4. 右键单击并重新启动服务

您刚刚重新启动了服务,代码应该运行没有错误


Aya*_*ifa 6

此代码项目提示中描述了可能的解决方案:

当人们在尝试登录sql server时提到IIS用户网络服务用户凭据.因此,只需更改IIS中的应用程序池设置:

  1. 打开Internet信息服务管理器
  2. 单击左侧导航树中的"应用程序池".
  3. 选择您的版本池.就我而言,我使用ASP .Net v4.0.如果您没有此版本,请选择DefaultAppPool.
  4. 右键单击步骤3,然后选择高级设置.
  5. 在属性窗口中选择Identity,然后单击按钮以更改值.
  6. 在"内置帐户"组合框中选择"本地系统",然后单击"确定".而已.现在运行您的应用程序 一切都很好.


Rus*_*fin 6

我们有连接字符串中web.config使用Data Source=localhost,并且有这个错误(MSSQL是在同一台机器上).将它改为实际的`DOMAIN\MACHINE'有帮助,不管怎么说.


Bon*_*ney 5

如果有,请始终检查内部异常。就我而言,内部异常对解决问题非常有帮助。

我的网站在开发环境中运行良好。但是在我部署到生产环境后,它开始发出这个异常,但内部异常表示特定用户的登录失败。
所以我发现这与连接本身有关。因此尝试使用 SSMS 登录,甚至失败了。

最终发现出现异常的原因很简单,即 SQL 服务器仅启用了 Windows 身份验证,而 SQL 身份验证失败,这正是我用于身份验证的原因。

简而言之,将身份验证更改为混合(SQL 和 Windows),为我解决了这个问题。:)