ローカル開発マシンで正常に動作するASP.Net MVCアプリケーションがあります。ただし、IIS7に展開すると、ログインしようとすると次のエラーが発生します。
初期化文字列の形式が、インデックス0から始まる仕様に準拠していません
このエラーを投稿するほとんどの人は、何らかの方法で接続文字列を変更することでそれを解決します。ただし、ローカルアプリケーションとデプロイ済みアプリケーションの接続文字列は同じです。接続文字列は次のとおりです。
<add name="ApplicationServices" connectionString="Data Source=*server*\*instance*;Initial Catalog=*database*;Integrated Security=True;"
providerName="System.Data.SqlClient" />
私の場合、このエラーの原因は何ですか?
初期化文字列の形式が、インデックス0から始まる仕様に準拠していません
Web.config:
<connectionStrings>
<add name="TestDataConnectionString" connectionString="Data Source=.\SQLExpress;Initial Catalog=TestData;User ID=satest;Password=satest"
/>
</connectionStrings>
aspx.csページでは、コードは以下の形式で記述する必要があります:
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrings["TestDataConnectionString"].ToString());
[CodeFirst Migrationsを有効にする]チェックボックスをオンにすると、Web配置ツールが構成に間違った行を作成しました。
私の場合、誤ってconn文字列に「password =」ではなく「password:」と記述しました
同じエラーが発生しました。私の場合は、構成変換が正しく機能していませんでした。接続文字列に関しては、構成変換に問題があります。いくつかの参照:
また、aspx.csページに次のコードを記述できます。
using (IDbConnection dbConnection =
new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString))
{
// TODO: Write SQL Stored Procedures or SQL Statements using Dapper
}
Dapper についてもっと知りたい人のために。
お役に立てれば。
Visual Studio Publishを使用していた場合Wizard=展開に使用し、設定でExecute Code First Migrationsチェックボックスをオンにすると、新しいConnectionStringがサーバーWebに自動的に追加されます.configファイル。以下の2行目に似ています。
<add name="LCWeb3Context" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=LCWeb3;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\LCWeb3.mdf" providerName="System.Data.SqlClient" />
<add name="LCWeb3Context_DatabasePublish" connectionString="LCWeb3Context_DatabasePublish.ConnetionString" providerName="System.Data.SqlClient" />
まず、追加された接続文字列に「ConnetionString」が含まれていることに注意してください。「ConnectionString」である必要があると思います。しかし、それは解決策ではありません。
「初期化文字列の形式がインデックス0から始まる仕様に準拠していない」エラーを回避するには、公開ウィザードで次の操作を実行します。
上記を実行すると、Server Web.configに追加される接続文字列は次のようになります。
<add name="LCWeb3Context_DatabasePublish" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\LCWeb3.mdf;Initial Catalog=LCWeb3;Integrated Security=True" providerName="System.Data.SqlClient" />
「初期化文字列のフォーマットがインデックス0から始まる仕様に適合していません」というエラーは発生しなくなりました。
Web.configの接続文字列に対して資格情報が正しいことを確認してください。私には、データベースへのアクセス許可を持つアカウントのパスワードがありませんでした。
コマンドを使用すると、同じ問題が発生します:パッケージマネージャーコンソールで "pdate-Database".
修正するには、startup projectを更新したいプロジェクトに設定してください。
例えば。 DbプロジェクトとWebプロジェクトを取得しました。「pdate-Database」を実行すると、Dbプロジェクトにstartup projectが設定されていることを確認してください。