ローカル開発マシンで正常に動作するASP.Netアプリケーションがあります。
このアプリケーションをオンラインで実行すると、次のエラーが表示されます
初期化文字列の形式が、インデックス0から始まる仕様に準拠していません
接続文字列を確認してください。ヘルプが必要な場合は、 接続文字列 を確認してください。これには、よく使用されるもののリストがあります。
一般的に使用される接続文字列:
標準セキュリティ
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
信頼できる接続(
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
SQL Serverインスタンスへの接続
サーバーオプションで使用されるサーバー/インスタンス名の構文は、すべてのSQL Server接続文字列で同じです。
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
標準セキュリティ
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
信頼できる接続(
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
SQL Serverインスタンスへの接続
サーバーオプションで使用されるサーバー/インスタンス名の構文は、すべてのSQL Server接続文字列で同じです。
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;
標準
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
TCPポートの指定
Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
TNSを使用する
Data Source=TORCL;User Id=myUsername;Password=myPassword;
統合セキュリティの使用
Data Source=TORCL;Integrated Security=SSPI;
tnsnames.oraなしでODP.NETを使用
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;
DbContext
クラスを含むプロジェクトをスタートアッププロジェクトとして設定します。
enable-migrations
の呼び出し中にこのエラーが発生していました。 Package Manager Console
で正しいDefault project
を選択したとしても、接続文字列が存在しないスタートアッププロジェクトのweb.configファイルをまだ見ていた。
私のパスワードにはセミコロンが含まれていたため、この問題に直面していました。引用符でパスワードを追加しました。それは本当にばかげた間違いでした。
私は次を変更しました:
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;Word" providerName="System.Data.SqlClient" />
に
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;Word'" providerName="System.Data.SqlClient" />
完全なspパスを参照すると、この問題は解決されました。
var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)
services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));
を追加するのを忘れたように、接続文字列を確認してください
それがエラーを引き起こし、ここでConfiguration.GetConnectionString
を追加すると、問題が解決します
現在の接続は次のとおりです。
services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
正常に動作します(この問題は.netコアで解決されます)
接続文字列が次の形式であることを確認してください。
サーバー= FOOSERVER; database = BLAH_DB; pooling = false; Connect Timeout = 60; Integrated Security = SSPI;
文字列にserver
タグがない場合、メソッドはこのエラーを返します。
同じエラーが発生しました。私の場合、これは接続文字列にパスワードの閉じ引用符がなかったためです。
これから変更
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />
に
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />
同じ問題がありました。ローカルサイトは正常に実行されましたが、Azureでは上記のメッセージが表示されて失敗しました。
次のように、問題はctorで接続文字列を設定していたことがわかります。
public DatabaseContext()
{
Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
}
動作しません、これは:
public DatabaseContext() : base("db")
{
}
私を殴る..
ASP.NET Web Apiの公開設定の接続文字列を変更することでこれを解決しました。
この投稿の私の答えを確認してください: エラーの修正方法::初期化文字列の形式が、インデックス0 ::で始まる仕様に準拠していません
私は同じ問題を抱えていましたが、最終的に次の方法で解決することができました。
問題は、web.configの接続文字列定義にありました。
<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>
ユーザーとロールを管理するときにローカルデータベースを使用したため、上記はローカルで完璧に機能しました。アプリケーションをIISに転送すると、ローカルDBにアクセスできなくなりました。さらに、SQL ServerでDBを使用したいと思います。したがって、上記の接続文字列を次のSQL Server DB相当物に変更します。
<add name="DefaultConnection" connectionString="data source=MY_SQL_SERVER; Initial Catalog=MY_DATABASE_NAME; Persist Security Info=true; User Id=sa;Password=Mybl00dyPa$$" providerName="System.Data.SqlClient"/>
注:上記も、ローカルボックスから同じSQL Serverを使用することを想定しています(ローカルweb.configに組み込む場合-これはまさに私の場合です)。
接続文字列「Database == PESitecore1_master」にタイプミスがありました
<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
私の問題は、DBオブジェクトのコンストラクターにデータベースロギングコードを追加したことでした。
参考までに、私はこの例を単純化しました。実際のコードでは、本番環境ではオフになっています(ただし、コードでは)
public class MyDB : DbContext
{
public MyDB()
{
this.Database.Log = x => { Debug.WriteLine(x); };
}
}
これは、あるソリューションから別のソリューションにWebページをコピーし、そのソリューションを実行して、webconfigに異なる接続文字列名があることがわかった場合にも発生します。次に、ページのデザインビューのプロパティパネルで接続文字列の名前を不注意に変更します。
デザインの代わりにコード部分で変更するだけの方が良いです。
接続文字列構成をコピーしてテストプロジェクトに貼り付け、このエラーが発生し始めました。接続文字列は、WebAPIプロジェクトで正常に機能しました。これが私の修正です。
var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
同じ問題があり、IISへの展開で接続文字列が正しく設定されなかったことがわかりました。 IISでサイトの接続文字列を表示するとき、実際の接続文字列ではなく、「$(ReplacableToken_devConnection-Web.config Connection String_0)」でした。そこで更新しましたが、すべて正常に機能しました
接続文字列の最後にある&quotを削除し、機能しました
の代わりに
App=EntityFramework"
中古
App=EntityFramework;
<add name="DefaultConnection" connectionString="data source=(local);initial catalog=NamSdb;persist security info=True;user id=sa;password=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.SqlClient" />
注:connectionStringには以下を含めないでください。
| x |メタデータ情報:「metadata = res:// * /」
| x |エンコードされた引用符: "" "
私の問題は、私が提供していた接続文字列が間違っていたり、使用していると思っていたapp.configの接続文字列が間違っていたのではなく、間違ったapp.configを使用していたことでした。