web-dev-qa-db-ja.com

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

ローカル開発マシンで正常に動作するASP.Netアプリケーションがあります。

このアプリケーションをオンラインで実行すると、次のエラーが表示されます

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

104
G.S Bhangal

接続文字列を確認してください。ヘルプが必要な場合は、 接続文字列 を確認してください。これには、よく使用されるもののリストがあります。

一般的に使用される接続文字列:

SQL Server 2012

標準セキュリティ

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;

SQL Server 2005

標準セキュリティ

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;

MySQL

標準

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

TCPポートの指定

Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

Oracle

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;
149
Hanlet Escaño

DbContextクラスを含むプロジェクトをスタートアッププロジェクトとして設定します。

enable-migrationsの呼び出し中にこのエラーが発生していました。 Package Manager Consoleで正しいDefault projectを選択したとしても、接続文字列が存在しないスタートアッププロジェクトのweb.configファイルをまだ見ていた。

10
Mart

私のパスワードにはセミコロンが含まれていたため、この問題に直面していました。引用符でパスワードを追加しました。それは本当にばかげた間違いでした。

私は次を変更しました:

<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" />
10

完全なspパスを参照すると、この問題は解決されました。

var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)
3
anon

services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));を追加するのを忘れたように、接続文字列を確認してください

それがエラーを引き起こし、ここでConfiguration.GetConnectionStringを追加すると、問題が解決します

現在の接続は次のとおりです。

services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));

正常に動作します(この問題は.netコアで解決されます)

3
user8099291

接続文字列が次の形式であることを確認してください。

サーバー= FOOSERVER; database = BLAH_DB; pooling = false; Connect Timeout = 60; Integrated Security = SSPI;

文字列にserverタグがない場合、メソッドはこのエラーを返します。

3
DBNoob

同じエラーが発生しました。私の場合、これは接続文字列にパスワードの閉じ引用符がなかったためです。

これから変更

<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" />
2
Amer Bashoeb

同じ問題がありました。ローカルサイトは正常に実行されましたが、Azureでは上記のメッセージが表示されて失敗しました。

次のように、問題はctorで接続文字列を設定していたことがわかります。

    public DatabaseContext() 
    {
        Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
    }

動作しません、これは:

    public DatabaseContext() : base("db")
    {
    }

私を殴る..

2
Flores

ASP.NET Web Apiの公開設定の接続文字列を変更することでこれを解決しました。

この投稿の私の答えを確認してください: エラーの修正方法::初期化文字列の形式が、インデックス0 ::で始まる仕様に準拠していません

2
ndarriulat

私は同じ問題を抱えていましたが、最終的に次の方法で解決することができました。

問題は、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に組み込む場合-これはまさに私の場合です)。

1

接続文字列「Database == PESitecore1_master」にタイプミスがありました

<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
1
Azadeh Khojandi

私の問題は、DBオブジェクトのコンストラクターにデータベースロギングコードを追加したことでした。

参考までに、私はこの例を単純化しました。実際のコードでは、本番環境ではオフになっています(ただし、コードでは)

public class MyDB : DbContext
{
    public MyDB()
    {
         this.Database.Log = x => { Debug.WriteLine(x); };
    }
}
1
Aaron Sherman

これは、あるソリューションから別のソリューションにWebページをコピーし、そのソリューションを実行して、webconfigに異なる接続文字列名があることがわかった場合にも発生します。次に、ページのデザインビューのプロパティパネルで接続文字列の名前を不注意に変更します。

デザインの代わりにコード部分で変更するだけの方が良いです。

1
Gellie Ann

接続文字列構成をコピーしてテストプロジェクトに貼り付け、このエラーが発生し始めました。接続文字列は、WebAPIプロジェクトで正常に機能しました。これが私の修正です。

var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
1
Kris Kilton

同じ問題があり、IISへの展開で接続文字列が正しく設定されなかったことがわかりました。 IISでサイトの接続文字列を表示するとき、実際の接続文字列ではなく、「$(ReplacableToken_devConnection-Web.config Connection String_0)」でした。そこで更新しましたが、すべて正常に機能しました

1
jason

接続文字列の最後にある&quotを削除し、機能しました

の代わりに

App=EntityFramework&quot;

中古

App=EntityFramework;

DefaultConnectionを以下のように設定します

<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 |エンコードされた引用符: "" "

1
Sujay U N

Sql Serverサービスが開始されていない場合があります。これによりエラーが発生する場合があります。 [サービス]に移動して、SQL Serverを起動します。これで動作するはずです。 enter image description here

0

私の問題は、私が提供していた接続文字列が間違っていたり、使用していると思っていたapp.configの接続文字列が間違っていたのではなく、間違ったapp.configを使用していたことでした。

0
Jeff Dege