2017-07-14 4 views
1

EFを使用してSQL Serverデータベースに接続するc#.NET Webアプリケーションがあり、 '初期化文字列の形式がインデックス0から始まる仕様に適合しません'というエラーが発生します。これは私のリモートサーバーでのみ発生し、ローカルで正常に動作します。明らかに私の接続文字列は正しくありません。私の質問はこのエラーに関するものではありません。接続文字列を含むエラーをスローする

私のアプリケーションには、5つのSQL Serverデータベースと一致する5つのコンテキストがあり、それぞれにweb.configファイルに接続文字列があります。私は最初の文脈が働いていることを知っていますが、私は他の文脈のどれが問題であるか分かりません。 web.config内の5つの接続文字列はすべて似ていて、最初のもの(それがはっきりと動作している)が動作している場合、なぜ動作していないのかわかりません。 5つの接続文字列すべてが動作するために使用され、変更されています。

だから私はもう少し手がかりが欲しいです。ここで

は私YSODからの私のスタックトレースです:

[ArgumentException: Format of the initialization string does not conform to specification starting at index 0.] 
    System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) +1739 
    System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) +191 
    System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) +136 
    System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +76 
    System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) +35 
    System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) +241 
    System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) +78 
    System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) +116 
    System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +931 
    System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.SetConnectionString(DbConnection connection, DbConnectionPropertyInterceptionContext`1 interceptionContext) +509 
    System.Data.Entity.Internal.LazyInternalConnection.Initialize() +77 
    System.Data.Entity.Internal.LazyInternalConnection.get_Connection() +16 
    System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func`1 resolver) +508 
    System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase) +370 
    System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context) +140 
    System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +72 
    System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +483 
    System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +177 
    System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +274 
    System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +38 
    System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +77 
    System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +21 
    System.Data.Entity.Internal.Linq.InternalSet`1.Find(Object[] keyValues) +32 
    Argus.RdAP.GetCodeFromIndex(Int32 IndexNumber) +140 
(etc...) 

OK、ここに私の質問です:私は悪い接続文字列が何だったか見ることができれば、それは本当に便利になります。私は、コードのどこで問題が起きているのか(つまり、Argus.RdAP.GetCodeFromIndex)を知っています。 try ... catch ...スローされた例外に実際の接続文字列を含むコードをスローしますか?

申し訳ありませんが、これはばかげた質問です。また、接続文字列にアクセスするか、根本的な問題を解決するための代替提案を歓迎します。

+0

私は基本的に接続文字列の内容を例外(ログファイル/サーバー/ ...)に書き込むことを防ぎます。接続文字列には、パスワードなどの機密情報が含まれることがあります。 –

+0

私の接続文字列にはパスワードがありません。これは非常に一時的な措置ですが、素晴らしい点です。 – Shewan

答えて

0

最終的に私は答えを見つけました!

try 
{ 
    // here was the method I suspected of causing the problem 
} 
catch 
{ 
    throw new Exception(ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString); 
} 
関連する問題