私のローカル開発マシンで問題なく動作するASP.Netアプリケーションがあります。
このアプリケーションをオンラインで実行すると、次のエラーが表示されます
初期化文字列の形式がインデックス0から始まる仕様に準拠していません
私のローカル開発マシンで問題なく動作する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;
これは誰かを助けるかもしれません。私のパスワードにはセミコロンが含まれていたため、この問題に直面していました。そのため、パスワードを引用符で囲みました。それは本当に愚かな間違いでした。
私は以下を変更しました:
<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" />
DbContext
クラスを含むプロジェクトをスタートアッププロジェクトとして設定します。
を呼び出しているときにこのエラーが発生しましたenable-migrations
。Package Manager Console
私が正しいを選択した場合でもDefault project
、接続文字列が存在しない、そのスタートアッププロジェクトのweb.configファイルをまだ調べていました。
同じ問題がありました。ローカルではサイトは問題なく動作しましたが、紺碧では上記のメッセージで失敗しました。
問題は次のようにctorに接続文字列を設定することでした:
public DatabaseContext()
{
Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
}
動作しません、これは:
public DatabaseContext() : base("db")
{
}
私を殴る..
追加を忘れたように、接続文字列を確認してください services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));
エラーが発生し、ここでを追加Configuration.GetConnectionString
すると、問題が解決します
今のように接続は:
services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
正常に動作します(この問題は.netコアで解決されています)
ASP.NET Web APIの公開設定で接続文字列を変更することにより、これを解決しました。
この投稿の私の回答を確認してください:エラーを修正する方法::初期化文字列の形式がインデックス0から始まる仕様に準拠していません::
同じエラーが発生しました。私の場合、これは接続文字列でパスワードの終了の引用符が抜けていたためです。
これから変更
<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" />
私の問題は、DBオブジェクトのコンストラクターにデータベースログコードを追加したことです。これにより、紺碧の配置プロファイルに混乱が生じたようです。
参考までに-私はこの例を簡略化しました、実際のコードではこれは本番環境では無効にされていました(まだコード内にあります)
public class MyDB : DbContext
{
public MyDB()
{
this.Database.Log = x => { Debug.WriteLine(x); };
}
}
私は同じ問題を抱えていて、最終的に次の方法でそれを解決することができました:
問題は私の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に組み込む場合-これは私の場合とまったく同じです)。
同じ問題があり、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 | エンコードされた引用: "" "
インラインsqldatasourceを使用するレガシーwebformsアプリケーションと、web.configに保存されている接続文字列を管理しているもう1つの不幸な魂の場合、<の代わりに<%APSDataConnectionString%>のような接続文字列にアクセスすると、このエラーが発生することがあります。 %$ ConnectionStrings:MyConnectionString%>。これは、.NETを3.5から4.xにアップグレードしたときに発生しました。
<asp:DropDownList ID="ddl" runat="server" DataSourceID="SqlDataSource1"
DataTextField="value" DataValueField="id"></asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
SelectCommand="select id, value from a_table">
</asp:SqlDataSource>
私の場合、問題はサーバー上で、アプリケーションが別のappsettings.jsonファイルを使用していたことでした。
私もこのエラーがあり、次のようにそれを解決することができました:以前にappsettings.jsonへの接続文字列を、作成したセクション(ConnectionsStrings(追加の「s」に注意))に書き込み、データベースに接続しようとしたため、エラー。これはASP.NET COREアプリケーションだったので、.GetConnectionStringメソッドを使用して接続したかったのです(詳細はこちら)。このメソッドは、暗黙的に "ConnectionStrings"セクションで接続文字列を検索しているようです。存在しません。「ConnectionStrings」に変更または修正すると、期待どおりに機能しました。
私が知っているように、ソリューション(現在のプロジェクト、スタートアッププロジェクトなど)に複数の接続文字列がある場合は常に、このエラーに直面する可能性があります