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 ...スローされた例外に実際の接続文字列を含むコードをスローしますか?
申し訳ありませんが、これはばかげた質問です。また、接続文字列にアクセスするか、根本的な問題を解決するための代替提案を歓迎します。
私は基本的に接続文字列の内容を例外(ログファイル/サーバー/ ...)に書き込むことを防ぎます。接続文字列には、パスワードなどの機密情報が含まれることがあります。 –
私の接続文字列にはパスワードがありません。これは非常に一時的な措置ですが、素晴らしい点です。 – Shewan