我正在开发一个实体框架(EF)项目,该项目作为Visual Studio 2013解决方案中另一个项目的补充类库。我最初在我的客户端开发系统上有一个模拟本地数据库,并从那里构建模式和其他实用程序。我正在使用的数据适配器使用SQL身份验证。
一旦我获得了满足我要求的经过验证的稳定版本,我就将EF项目纳入了解决方案。在本地数据库上工作,一切正常。然后,我通过以下方式将EF数据库重新定位到远程SQL服务器:
App.Config
个文件完成后,我重新运行解决方案。 EF在框架的第一次调用中抛出异常:
EntityFramework.SqlServer.dll中出现未处理的“System.Data.Entity.Core.EntityException”类型异常
其他信息:基础提供商在Open上失败。
当我检查内部异常时,我发现了这个:
登录失败。登录来自不受信任的域,不能与Windows身份验证一起使用。
这个例外让我很困惑,因为如果你在我的帖子开头回忆起来,我正在使用SQL身份验证。
我目前没有使用任何与ASP.NET相关的东西,我的测试平台只是从一个控制台应用程序执行,在迁移前没有问题。
我想说这是一个管理/环境问题,而不是代码,因为本地我没有问题,我的T-SQL脚本似乎在远程服务器上正常运行,我与它有连接。对我来说不幸的是,我的SQL服务器技能并没有接近我的编码能力,我无法“证明”它。所以我发现自己不知所措。
来自stackoverflow的优秀人员的任何帮助将不胜感激!
追加:
Per DrewJordan:
Context Constructor -
public DatabaseContext(): base("name=DatabaseContext") {}
连接字符串 -
的connectionString =“元数据= RES:// /Database.csdl|res:// /Database.ssdl|res://*/Database.msl;provider=System.Data.SqlClient ; provider connection string =“data source = mycompany.com \ SQLEXPRESS; initial catalog = sandbox2_db; integrated security = True; MultipleActiveResultSets = True; App = EntityFramework”“providerName =”System.Data.EntityClient“
答案 0 :(得分:1)
您已通过此设置integrated security=True;
启用了Windows身份验证
将其更改为integrated security=False;
,或者您可以完全删除该字段。
来源:过去项目的2小时漏洞。 这是msdn reference
答案 1 :(得分:0)
我发现了问题。正如我之前所说,我的项目使用SQL身份验证,但如果您注意到我的连接字符串中没有SQL用户ID。
如果未提供用户ID,则实体框架将默认使用本地客户端用户ID。
后者在远程域中合格,本地客户端不合格,这就是我无法连接的原因。