2
當我發表我的ASP.NET MVC 4,EF 5.0,代碼優先項目,以測試或發生生產環境以下異常:指定店鋪提供商不能在配置中找到
(錯誤0175:指定的存儲提供不能在配置中找到,或者是無效的。)
[MetadataException: Das angegebene Schema ist ungültig. Fehler:
(0,0) : Fehler 0175: Der angegebene Speicheranbieter kann nicht in der Konfiguration gefunden werden oder ist ungültig.]
System.Data.Metadata.Edm.Loader.ThrowOnNonWarningErrors() +57
System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer`2& cachedCTypeFunction) +206
System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders) +368
System.Data.Entity.Migrations.Extensions.XDocumentExtensions.GetStoreItemCollection(XDocument model, DbProviderInfo& providerInfo) +361
System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString) +72
System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, DbMigration lastMigration) +194
System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) +328
System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context) +150
System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +66
的SQL服務器上的數據庫的創建,以及在數據庫中的表。
在本地開發環境一切工作正常。我本地安裝了與測試/生產相同的MS SQL Express 2008 R2版本。而且本地的一切都在工作。
正如我用相同的誤差(大多與MySQL數據庫)上的其他讀取,錯誤固定與包括二進制文件。但對於MSSQL,沒有特殊的二進制文件可以包含(我認爲)。並且數據庫/表被創建,所以對SQL服務器的訪問應該沒問題。
這裏是我的生產/測試的web.config:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="NameOfContext" connectionString="Server=ServerName\MSSQL;Database=DatabaseName;User Id=Username;Password=Password" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
...
<entityFramework>
<contexts>
<context type="NameOfContext, Application name">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[NameOfContext, Application Name], [Name_App.Migrations.Configuration, Application Name]], EntityFramework, PublicKeyToken=b77a5c561934e089">
<parameters>
<parameter value="NameOfContent" />
</parameters>
</databaseInitializer>
</context>
</contexts>
</entityFramework>
如果它說的程序無法找到,那麼無論它需要的程序不存在,或者用戶沒有權限看到它。在這種情況下,我使用SQL配置文件準確觀察發生了什麼。通常情況下,這會爲您提供許多關於正在發生的事情的信息,並帶領您朝着正確的方向前進。 – mroach 2013-04-25 14:29:48
好的,什麼是SQL Profile? – IFY 2013-04-25 22:06:28
我的意思是SQL Profiler。這是SQL Server管理工具附帶的一個實用程序。它允許您查看服務器上的所有活動,包括正在運行的命令。 – mroach 2013-04-26 16:17:32