我有一个在 VS2012 中开发的简单 EF 5.0 / Code First 应用程序。在开发中,它使用 SQL Server CE。但是,当我将它部署在测试服务器上时,我收到以下错误堆栈:
ProviderIncompatibleException: An error occurred while getting provider information from the database.
This can be caused by Entity Framework using an incorrect connection string.
Check the inner exceptions for details and ensure that the connection string is correct.
ProviderIncompatibleException: The provider did not return a ProviderManifestToken string
SqlException (0x80131904): Login failed for user 'MYDOMAIN\MYSERVER$'
IIS 和数据库位于同一台服务器 (MYSERVER) 上。它运行 Win2012(使用 IIS 8 和 .NET 4.5)和 SQL Server 2012。
web.config 中有两件事引起了我的注意。首先,连接字符串。我从 IIS UI 生成它;我使用了具有“数据源”的旧连接字符串,而不是服务器。我使用了本地主机和服务器名称。我创建了一个数据库用户。我在某处读到数据库不存在 - 所以我删除了它。我在数据库中授予了 NT AUTHORITY\NT SERVICE 权限。我可能做了一些其他的排列——但结果总是一样的。
第二名是实体框架部分下的连接工厂。显然,Web Deploy 并没有改变它;类型仍然是 SqlCeConnectionFactory,参数是 System.Data.SqlServerCe.4.0。我在某处看到 SQL Server 是默认设置 - 所以我删除了它;当这不起作用时,我相应地将值更改为 SqlConnectionFactory 和 System.Data.SqlServer - 但同样,结果是相同的。
到现在为止我已经没有想法了......鉴于即使我从现有数据库中读取数据时我也遇到了问题 - 我错过了一些简单的东西......