web-dev-qa-db-ja.com

初期化文字列の形式が、インデックス0から始まる仕様に準拠していません

ローカル開発マシンで正常に動作するASP.Net MVCアプリケーションがあります。ただし、IIS7に展開すると、ログインしようとすると次のエラーが発生します。

初期化文字列の形式が、インデックス0から始まる仕様に準拠していません

このエラーを投稿するほとんどの人は、何らかの方法で接続文字列を変更することでそれを解決します。ただし、ローカルアプリケーションとデプロイ済みアプリケーションの接続文字列は同じです。接続文字列は次のとおりです。

<add name="ApplicationServices" connectionString="Data Source=*server*\*instance*;Initial Catalog=*database*;Integrated Security=True;"
      providerName="System.Data.SqlClient" />

私の場合、このエラーの原因は何ですか?

18
Banford

初期化文字列の形式が、インデックス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());
16
Guru

[CodeFirst Migrationsを有効にする]チェックボックスをオンにすると、Web配置ツールが構成に間違った行を作成しました。

12
Der_Meister

私の場合、誤ってconn文字列に「password =」ではなく「password:」と記述しました

2
Zoran P.

同じエラーが発生しました。私の場合は、構成変換が正しく機能していませんでした。接続文字列に関しては、構成変換に問題があります。いくつかの参照:

また、aspx.csページに次のコードを記述できます。

using (IDbConnection dbConnection =
       new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString))
       {
           // TODO: Write SQL Stored Procedures or SQL Statements using Dapper
       }

Dapper についてもっと知りたい人のために。

お役に立てれば。

1
Shriroop

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から始まる仕様に準拠していない」エラーを回避するには、公開ウィザードで次の操作を実行します。

  1. 設定で、構成:リリースを選択します
  2. 設定で、接続文字列を「リモート接続文字列」フィールドに貼り付けることを忘れないでください
  3. 設定で、Code First Migrationsの実行をチェックします

上記を実行すると、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から始まる仕様に適合していません」というエラーは発生しなくなりました。

1
MidnightCoder

Web.configの接続文字列に対して資格情報が正しいことを確認してください。私には、データベースへのアクセス許可を持つアカウントのパスワードがありませんでした。

1
H. West

コマンドを使用すると、同じ問題が発生します:パッケージマネージャーコンソールで "pdate-Database".

修正するには、startup projectを更新したいプロジェクトに設定してください。

例えば。 DbプロジェクトとWebプロジェクトを取得しました。「pdate-Database」を実行すると、Dbプロジェクトにstartup projectが設定されていることを確認してください。

0
Box Very