1

マイコードはローカルで機能し、接続文字列はAZURESQLSERVERを指します。ただし、Azure Webサイトに公開するとすぐに、EFモデルを使用するすべてのビューでこのエラーがスローされます。提案された解決策の1つとして「を」に変更しましたが、何も機能しません。

  System.Data.EntityException: The underlying provider failed on ConnectionString. ---> System.ArgumentException: Keyword not supported: 'metadata'.
   at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
   at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
   at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
4

4 に答える 4

2

接続文字列にMultipleActiveResultSets=Trueがある場合は、それを削除してください。同じ接続文字列が Windows Azure で機能するはずです。これがあなたの状況で最も一般的なエラーであることがわかりました。

そうでない場合は、接続文字列を投稿してください。確認します。

于 2012-07-04T03:01:27.543 に答える
2

OPと同じ問題がありましたが、彼の解決策はうまくいきませんでした。

これは接続文字列の問題でしたが、引用符の問題ではありませんでした。

解決するのに2日かかったので、おそらくこれは他の誰かを助けるでしょう:

[Azure でホストされている場合の ASP.NET MVC 4.5/Entity Framework 5.0 アプリケーションで機能する接続文字列(SQL Server 2012 に対してローカルで開発していますが、データベースを Azure SQL Database に移行します ( SQL Database Migration Wizardを使用))。最初にデータベースを使用して.edmxファイルを作成しています(データベースから(データ)モデルを生成します)]は次のとおりです。

<add name="MYPROJECTENTITIES" connectionString="**metadata=**res://*/MODELS.MYPROJECTMODEL.csdl|res://*/MODELS.MYPROJECTMODEL.ssdl|res://*/MODELS.MYPROJECTMODEL.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:B6JD5K5EP4.database.windows.net,1433;Initial Catalog=MYPROJECT_DB;Integrated Security=False;User ID=MYPROJECT@B6JD5K5EP4;Password=MYPASSWORDABC123;**MultipleActiveResultSets=True**;Encrypt=True;TrustServerCertificate=False&quot;" providerName="System.Data.EntityClient"/>

大文字のテキストは、私の Azure 情報です。明らかに、代わりに独自のものを使用する必要があります。

接続文字列のこの部分は私に悪夢を与え、それがあなたの問題を引き起こしている可能性もあります:

res://*/Models.MyProjectModel.csdl|res://*/Models.MyProjectModel.ssdl|res://*/Models.MyProjectModel.msl

これらの参照は正確に正しくなければなりません。繰り返しますが、これらの参照は正確でなければなりません!!

2008 年のこの記事(「Entity Framework 接続文字列のトラブルシューティング」)を読んだ後、私は .NET Reflector を使用して MyProjectModel.dll (私の .dll の名前 (プロジェクトでは異なる可能性があります) の名前) を調べました。接続文字列 (Entity Framework によって自動的に生成されました!) が間違っていました. プレフィックスが含まれていませんでした. Models.プレフィックスを追加するとすぐに (.csdl/.msl/.ssdl の名前が付けられます)私の .dll の内部 (おそらくあなたのものとは異なる)), すべてうまくいきました.あなたの .dll の中を見て、名前が一致するかどうかを確認してください.そうでない場合は、.dll に表示されるものと一致するように変更してください.(上記の記事を読んでください)私が言っていることが十分に明確でない場合。)

于 2012-12-29T04:09:05.723 に答える
0

これが役立つかもしれない別のSOスレッドに関する私の答えです。そこで言及した手順には、Azure での接続文字列のエンド ツー エンドの構成と、それを動的に使用することが含まれます。そして、はい、それは問題のエラーを修正します!

https://stackoverflow.com/a/37938912/3785895

詳細情報: providerName の変更に加えて、確認が必要な追加のビットがいくつかあります。Azure は、API アプリ/Web アプリを公開した後、web.config ファイルを更新しているようです。

于 2016-06-21T20:44:32.043 に答える