gpt4 book ai didi

c# - 如何打败 ProviderIncompatibleException?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:29 25 4
gpt4 key购买 nike

这似乎与使用代码优先或本地数据库实例时 EF 未连接到 SQL Server 数据库的常见错误配置问题有关。但是,我的方案不包括其中任何一个。我正在尝试运行一个包含 34 个项目的生产应用程序,这些项目刚从 SVN 中提取出来,连接到几个不同的远程 SQL 框。当我调试时,我在第一次尝试访问主数据库时抛出了这个异常:

ProviderIncompatibleException
The Provider did not return a ProviderManifestToken string.
内部异常:
Login failed for user 'DOMAIN\\MACHINE-NAME$'.

堆栈跟踪:

    at System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection)
at System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.Initialize()
at System.Data.Entity.Internal.LazyInternalContext.get_ObjectContext()
at System.Data.Entity.DbContext.System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()
at XX.Service.Base.GenericRepository`1.Get(String predicate, Object[] values, Int32 PageNumber, Int32 PageSize, List`1 SortColumns, String[] path) in [...]
at XX.Service.Base.GenericRepository`1.Get(SearchCommand cmd, String[] path) in [...]

此行失败:
ObjectContext objectContext = ((IObjectContextAdapter)Context).ObjectContext;

我的连接字符串:
<add name="ProdContext" connectionString="Data Source=SERVER.companydomain.com\XX,51332;Initial Catalog=ProdDB;Integrated Security=true;" providerName="System.Data.SqlClient"/>

我已经查看了搜索“providerincompatibleexception login failed”时列出的每个 SO 问题,但我仍然找不到答案。我可以使用 Windows 身份验证通过 SSMS 登录到 SQL 服务器。 DBA 说我和其他应用程序开发人员在同一个访问组中。我在本地 IIS 管理器中无休止地摆弄目录权限和身份验证设置。调试时,如果我检查底层上下文,服务器地址和连接字符串是正确的。

我必须在某处缺少配置设置。我可以在生产站点上使用该应用程序,但不能在我的本地 VS2012 构建中使用。我还能检查什么?我错过了什么?我希望能够在其他开发人员休假归来之前成功构建并加快速度...

最佳答案

我认为与外部异常相比,它更多地与内部异常有关:

用户 'DOMAIN\\MACHINE-NAME$' 登录失败

我猜您使用的是本地 IIS Web 服务器,而不是 Visual Studio 开发服务器。

我相信应用程序池的身份是影响这一点的因素。该帐户或运行 ASP.NET/IIS 服务的帐户。

IIS 管理器->应用程序池->右键单击您的应用程序运行所在的池->高级设置->身份

我相信这是在您使用集成安全连接字符串时将用于 SQL Server 的帐户。

将该设置与其他开发人员的机器进行比较。

此外,在 IIS 管理器->站点->单击您的站点->基本设置下,有一个“连接为”选项。如果您有嵌套站点,通常这会继承,但有一次我不得不在嵌套站点上明确设置它,以解决传递错误用户进行身份验证的问题。

关于c# - 如何打败 ProviderIncompatibleException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com