0

Azure Cloud Services にデプロイしようとしている新しいアプリがあります。VisualStudio 2012、Entity Framework - Code First、および SQL Server Management Studio を使用してローカルで開発されました。

Azure クラウド サービス プロジェクト、Web ロール プロジェクト、サービス レイヤー クラス (C#) ライブラリ、およびデータ オブジェクト クラス ライブラリがあります。

これらはすべて、私のローカル マシンで美しく連携します。Web はサービスを呼び出し、サービスはコンテキストを呼び出し、コンテキストはオブジェクトを返します (または変更します)。わーい!

次に、Web アプリを公開しました。このステートメントで web.release.config 変換を追加しました...

<connectionStrings>
    <add name="DefaultConnection"
    connectionString="Server=tcp:xmeg1j7x57.database.windows.net,1433;Database=RS.Core.Objects.RSData;User ID=****@xmeg1h7x57;Password=**********;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>

そして喜びはありません。まだ私の(localdb)を呼び出そうとしているようです。

そこで、ローカルで実行し (web.config を azure の運用文字列に変更しました)、ブレークポイントで...

WebConfigurationManager.AppSettings["DefaultConnection"]

文字列を期待しています。アレイを発見しました。2 番目の値は web.config からのものでしたが、最初の値は (localdb) への自動生成された参照でした。この参照を取り除くにはどうすればよいですか? 明らかに何かが欠けていますが、何時間もの調査により、私の Google-Fu が弱いことが証明されました。

4

2 に答える 2

1

過去にこの問題を引き起こした2つのことを確認してください。

  1. MembershipProvider が作成される前に、いくつかの System.Security メソッド (具体的には User.IsInRole()) を呼び出していました。何らかの理由で、これはユーザー情報について localdb インスタンスをチェックしようとしました。MembershipProvider が実行されると、この問題は発生しなくなりました。時間制限のため、このバグを回避するようにコーディングしました。
  2. 接続文字列の名前を "DefaultConnection" から別の名前 (おそらく "AzureDbConnection") に変更し、必要に応じてすべての参照を変更します。

また、プロジェクト全体で "DefaultConnection" を検索し、それが動的に設定されているかどうかを確認し、接続文字列情報の app.config をクリアすると便利な場合もあります。

于 2013-09-09T03:54:43.400 に答える
0

</clear>「追加」の前にa を追加してみてください。

<connectionStrings>
    </clear>
    <add name="DefaultConnection"
    connectionString="Server=tcp:xmeg1h7x57.database.windows.net,1433;Database=RS.Core.Objects.RoomScopeData;User ID=RSAdmin@xmeg1h7x57;Password=**********;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>
于 2013-09-09T02:52:07.743 に答える