2013-03-13 70 views
4

這裏是異常的初始化字符串的格式,實體框架 - 在索引0

System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0. 

    at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) 
    at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) 
    at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) 
    at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) 
    at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) 
    at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) 
    at System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) 
    at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) 
    at System.Data.Entity.Internal.LazyInternalConnection.Initialize() 
    at System.Data.Entity.Internal.LazyInternalConnection.get_Connection() 
    at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo) 
    at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbConnectionInfo connectionInfo) 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext) 
    at System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context) 
    at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) 
    at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() 
    at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) 
    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 
    at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 
    at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 
    at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() 
    at System.Linq.Queryable.OrderByDescending[TSource,TKey](IQueryable`1 source, Expression`1 keySelector) 
    at Article.GetAll() in Article.cs:line 43 
    at ASP._Page_Views_Home_Index_cshtml.Execute() in Index.cshtml:line 9 
    at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() 
    at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() 
    at System.Web.WebPages.StartPage.ExecutePageHierarchy() 
    at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) 
    at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) 

我的連接字符串,

<connectionStrings> 
    <add name="MyContext" connectionString="Persist Security Info=false;Integrated Security=false;Connection Timeout=4;Initial Catalog=<nice>;User ID=<nice>;pwd=<nice>;server=<nice>" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="Data Source=<nice>;Initial Catalog=Master;Persist Security Info=False;User ID=<nice>;Password=<nice>;MultipleActiveResultSets=True;Application Name=EntityFramework" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

我不知道怎麼回事。我的連接字符串不工作?

!!更新!!

有趣的是 - 我發現當我使用web部署一個新的連接字符串和實體框架>默認連接工廠>參數被添加...我知道嗎?什麼?!

我的結果發表了 「投入生產」 web.config文件看起來是這樣的:

<connectionStrings> 
    <add name="MyContext" connectionString="Data Source=<nice>;Initial Catalog=<nice>;Persist Security Info=False;User ID=<nice>;Password=<nice>; MultipleActiveResultSets=True;Application Name=EntityFramework" providerName="System.Data.SqlClient" /> 
    <add name="MyContext_DatabasePublish" connectionString="Data Source=<nice>;Initial Catalog=<nice>;Persist Security Info=False;User ID=<nice>;Password=; MultipleActiveResultSets=True;Application Name=EntityFramework" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
      <parameter value="DatabasePublish" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <contexts> 
     <context type="MyContextDBContext, Models"> 
      <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyContextDBContext, Models], [Models.Migrations.Configuration, MyWebsite.Models]], EntityFramework, PublicKeyToken=<nice>"> 
       <parameters> 
        <parameter value="DatabasePublish" /> 
       </parameters> 
      </databaseInitializer> 
     </context> 
    </contexts> 
</entityFramework> 

很有趣吧?

現在,發佈時,網站會拋出「連接字符串錯誤的格式」。

我想我想要的是消除需要自動添加新的連接字符串&上下文,並且正是我已經在Web配置中。

什麼是最糟糕的是,這個所謂的「功能」打破了使用web.config轉換。事實上,我已經開始喜歡使用新的「預覽變換」功能。但是,即使預覽也會顯示這些更改。

這是怎麼回事?

我可以刪除它嗎?

+2

在web部署中,我選中了表示在部署上啓用遷移的框。 當這樣做時,它創建了額外的連接字符串參數。 導致所有問題... 我希望我知道爲什麼/它試圖待辦事項): – Erik5388 2013-03-16 16:13:31

回答

0

如果您添加到Global.asax中,你應該有一個想法,什麼是錯的字符串..

throw new Exception(ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString); 

如果你看到任何標記佔位符,你應該有一個更好的主意什麼做。

同時檢查權限用戶的SQL服務器上..

+0

有趣的是,似乎EF(或其他)添加了一個新的連接字符串到我的網絡配置...爲什麼?如果我手動刪除Web部署後的連接字符串,並引用數據庫上下文,那麼它的工作原理... – Erik5388 2013-03-13 23:31:55

+0

我如何使它如此EF沒有搞亂我的網絡配置? – Erik5388 2013-03-13 23:32:14

+0

看起來您在項目設置中設置了數據庫發佈。嘗試禁用該功能。 – 2013-03-14 14:11:34

0

我跟所有的建議,毫無效果。但我發現這條線創建了錯誤: Database.EnsureCreated()

當我刪除EnsureCreated方法後,我能夠創建我的第一次遷移。