Godaddy共有ホストにサイトをアップロードしました。 I アクセス可能私の管理スタジオからこのデータベース。 I アクセスできません私のサイトからこのデータベース。次のエラーが表示されます。
初期化文字列の形式が、インデックス0から始まる仕様に準拠していません。
接続文字列はweb.configにあり、次のようになります。
_<connectionStrings>
<add name="mcn" connectionString="Data Source=mydatabase.db.8706856.hostedresource.com; Initial Catalog=mydatabase; User ID=username; Password=xyz;" providerName="System.Data.SqlClient" />
</connectionStrings>
_
このエラーの原因は何ですか?私は...Data Source=(local);...
も書き込もうとしました
実際の接続文字列が何であるかを確認すると役立つ場合があります。 Global.asaxに追加します。
_throw new Exception(ConfigurationManager.ConnectionStrings["mcn"].ConnectionString);
_
実際の接続文字列が$(ReplacableToken_mcn-Web.config Connection String_0)
である場合、問題を説明します。
私は同じ問題に直面しており、接続文字列の中央に余分な二重引用符文字があることがわかりました。
私はもともと以下に示すように接続文字列値を呼び出していました(VB.NET)と言及されているエラーが発生しました
Using connection As New SqlConnection("connectionStringName")
'// more code would go here...
End Using
system.Configurationへの参照を追加し、以下に示すようにコードを更新することが私の解決策でした。他のコントロールが問題なく使用したため、接続文字列は問題ではありませんでした(SqlDataSource)
Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString)
'// more code would go here...
End Using
私はVS2015でこれを持っていましたが、私の修正はWebConfigの最初の行を
<?xml version="1.0" encoding="utf-8"?>
に
<?xml version="1.0"?>
奇妙な。
別の落とし穴は、connectionString
がapp/web-config内の接続文字列の名前を参照する場合と、実際の接続文字列自体を参照する場合があります。
非常に簡単に修正できますが、時々見つけにくい場合があります。
私の場合、犯人はセミコロンとprod DBのパスワードの二重引用符でした。私たちのITチームはいくつかのツールを使用してパスワードを生成するため、Connectionstringがセミコロンと二重引用符で囲まれたものを生成しました
<add key="BusDatabaseConnectionString" value="Data Source=myserver;Initial Catalog=testdb;User Id=Listener;Password=BlaBla"';[]qrk/>
変更されたパスワードを手に入れて、それは働いた。
Enable-Migrations
を実行することによって生じるこの同じエラーを修正しようとしてこのスレッドに出くわす可能性のある人にとっては、上記の解決策のどれも役に立たない可能性があります(私はそれらをすべて試しました)。
PMコンソールでこれを実行した後、Web API 2で同じ問題が発生しました。
Enable-Migrations -EnableAutomaticMigrations -ConnectionString IdentityConnection -ConnectionProviderName System.Data.SqlClient -Force
ApplicationDbContext
で作成されたIdentityModels
を実際に使用するように変更して修正しました。
Enable-Migrations -ContextTypeName ApplicationDbContext -EnableAutomaticMigrations -Force
興味深いのは、これが同じ正確な接続文字列を参照するだけでなく、4castleが修正の可能性があると言ったコード(つまり、throwIfV1Schema: false
の提案)がコンストラクターに含まれていることです。
-Force
ファイルは既に存在するため、Configuration.cs
パラメーターのみが使用されていることに注意してください。
私の問題は、web.configファイルが削除されたエンティティモデル接続への参照を保持しているため、古い接続文字列がないことを確認することでした。
私はこの例外を受け取っていましたが、throwIfV1Schema: false
をDbContextコンストラクターに追加することで修正しました。
public class AppDb : IdentityDbContext<User>
{
public AppDb()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
}
EFと公開プロファイルを使用している場合、公開プロファイルに空の接続文字列エントリが含まれている可能性があります。迷惑ですが、完全に可能です。
このスレッドにリストされているソリューションはどれも私にとってはうまくいきませんでした。 web.configファイルの接続文字列セクションにいくつかの変更を加えた後、このエラーが発生し始めました。 (私のアプリは複数のデータベースに接続します。)リストの一番上にあるタグを削除したことに気づいたとき、どのような変更を加えたかを注意深く調べました。接続文字列のリストの先頭にあるタグを復元すると、問題はすぐになくなりました。エラーが発生したこのサイトは、メインサイト( https://www.domain.org/MySite )の下にあるアプリケーションです。これはすべての人にとって問題を解決するわけではありませんが、私にとっては問題を解決しました。
不要な一重引用符が私の問題でした。エラー文字列に記載されているインデックスの場所から接続文字列を確認すると、問題を見つけるのに役立ちました。
私の修正は驚くほど簡単で、自分がやったことを理解したときに明らかになるものでした。次の方法で、.NET Core/Standardを使用して手動で構成を構築していました。
var configurationBuilder = new ConfigurationBuilder();
var root = configurationBuilder.Build();
構成設定が含まれているappsettings.jsonファイルを含めるのを忘れていた
configurationBuilder.AddJsonFile("appsettings.json", false);
追加すると、すべてが再び機能し始めました。
Visual Studioを使用したlocalhost開発でも同じエラーメッセージが表示されました。 Microsoftリリース管理(MRM)でリリースされたとき、すべてが機能していたことに注意してください。 MRM参照である初期値を変更して、状況を修正しました。
私のApp.configの初期値は次のとおりです。
<connectionStrings>
<add name="BDORA" connectionString="__token3__" />
</connectionStrings>
ローカルでは、アプリケーションの実行はtokens.xmlの実際の値へのtoken3参照を解釈できませんでした。ローカルホストで機能させるには、Tokens.xmlのtoken3の値をApp.configファイルに強制する必要がありました。
このエラーで1.5営業日を無駄にしたため、最終的に同僚はユーザーIDをUidに、パスワードをPwdに置き換えることで問題を解決しました。 .Netの更新された接続文字列は私にとってエラーでした
アプリケーションを起動しようとすると、以下のエラーが発生しました:
初期化文字列の形式は、インデックス57から始まる仕様に準拠していません。
そして、調査中にこのスタックを見つけました。Web構成ファイルを調べることでこのエラーを修正できましたが、passowrdに余分な文字列がありました。文字列を削除すると、エラーなしでWebサイトにアクセスできました。