web-dev-qa-db-ja.com

エラーの修正方法::初期化文字列の形式が、インデックス0 ::で始まる仕様に準拠していません

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);...も書き込もうとしました

15
1110

実際の接続文字列が何であるかを確認すると役立つ場合があります。 Global.asaxに追加します。

_throw new Exception(ConfigurationManager.ConnectionStrings["mcn"].ConnectionString);
_

実際の接続文字列が$(ReplacableToken_mcn-Web.config Connection String_0)である場合、問題を説明します。

17
Michael Liu

私は同じ問題に直面しており、接続文字列の中央に余分な二重引用符文字があることがわかりました。

5
dotNET

私はもともと以下に示すように接続文字列値を呼び出していました(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
3

私はVS2015でこれを持っていましたが、私の修正はWebConfigの最初の行を

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0"?>

奇妙な。

2
sobelito

公開されたASP.NET Web Apiにアクセスすると、同じ問題が発生していました。私の場合、Web Apiを公開しようとしたときに、データベースセクション内で接続文字列を指定していなかったことに気付きました。

After using the three dot button, the connection string will be displayed on the text field to the left

そこで、3つのドットボタンを使用して生成し、公開後に機能しました。

奇妙なことは、長い間、その構成に接続文字列がなかったが、それでも機能していることを確信していることです。

2
ndarriulat

別の落とし穴は、connectionStringがapp/web-config内の接続文字列の名前を参照する場合と、実際の接続文字列自体を参照する場合があります。

非常に簡単に修正できますが、時々見つけにくい場合があります。

1
Jonas Stensved

私の場合、犯人はセミコロンとprod DBのパスワードの二重引用符でした。私たちのITチームはいくつかのツールを使用してパスワードを生成するため、Connectionstringがセミコロンと二重引用符で囲まれたものを生成しました

<add key="BusDatabaseConnectionString" value="Data Source=myserver;Initial Catalog=testdb;User Id=Listener;Password=BlaBla"';[]qrk/>

変更されたパスワードを手に入れて、それは働いた。

1
Manish

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パラメーターのみが使用されていることに注意してください。

0
Dave Conley

私の問題は、web.configファイルが削除されたエンティティモデル接続への参照を保持しているため、古い接続文字列がないことを確認することでした。

0
kravits88

私はこの例外を受け取っていましたが、throwIfV1Schema: falseをDbContextコンストラクターに追加することで修正しました。

public class AppDb : IdentityDbContext<User>
{
    public AppDb()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }
}
0
4castle

EFと公開プロファイルを使用している場合、公開プロファイルに空の接続文字列エントリが含まれている可能性があります。迷惑ですが、完全に可能です。

0
Mike Devenney

このスレッドにリストされているソリューションはどれも私にとってはうまくいきませんでした。 web.configファイルの接続文字列セクションにいくつかの変更を加えた後、このエラーが発生し始めました。 (私のアプリは複数のデータベースに接続します。)リストの一番上にあるタグを削除したことに気づいたとき、どのような変更を加えたかを注意深く調べました。接続文字列のリストの先頭にあるタグを復元すると、問題はすぐになくなりました。エラーが発生したこのサイトは、メインサイト( https://www.domain.org/MySite )の下にあるアプリケーションです。これはすべての人にとって問題を解決するわけではありませんが、私にとっては問題を解決しました。

0
George McKee

不要な一重引用符が私の問題でした。エラー文字列に記載されているインデックスの場所から接続文字列を確認すると、問題を見つけるのに役立ちました。

0
Kirsten Greed

私の修正は驚くほど簡単で、自分がやったことを理解したときに明らかになるものでした。次の方法で、.NET Core/Standardを使用して手動で構成を構築していました。

var configurationBuilder = new ConfigurationBuilder();
var root = configurationBuilder.Build(); 

構成設定が含まれているappsettings.jsonファイルを含めるのを忘れていた

configurationBuilder.AddJsonFile("appsettings.json", false);

追加すると、すべてが再び機能し始めました。

0
The Senator

Visual Studioを使用したlocalhost開発でも同じエラーメッセージが表示されました。 Microsoftリリース管理(MRM)でリリースされたとき、すべてが機能していたことに注意してください。 MRM参照である初期値を変更して、状況を修正しました。

私のApp.configの初期値は次のとおりです。

  <connectionStrings>
    <add name="BDORA" connectionString="__token3__" />
  </connectionStrings>

ローカルでは、アプリケーションの実行はtokens.xmlの実際の値へのtoken3参照を解釈できませんでした。ローカルホストで機能させるには、Tokens.xmlのtoken3の値をApp.configファイルに強制する必要がありました。

0
Michael Fayad

このエラーで1.5営業日を無駄にしたため、最終的に同僚はユーザーIDをUidに、パスワードをPwdに置き換えることで問題を解決しました。 .Netの更新された接続文字列は私にとってエラーでした

0
Maham Khan

アプリケーションを起動しようとすると、以下のエラーが発生しました:

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

そして、調査中にこのスタックを見つけました。Web構成ファイルを調べることでこのエラーを修正できましたが、passowrdに余分な文字列がありました。文字列を削除すると、エラーなしでWebサイトにアクセスできました。

0
user3320382