5

<appSettings>Azure Webの役割があり、いくつかの設定をweb.configのタグの下に保存したいと思います。はい、私はサービス構成ファイルを知っていますが、web.configを好む理由があります。

(ここから)実行すると:

System.Configuration.Configuration rootWebConfig =
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (rootWebConfig1.AppSettings.Settings.Count > 0) {
}

にキーと値のペアを追加しましたが、設定カウントは常にゼロです<appSettings>

私は何が間違っているのですか?Webロールエントリポイント内からweb.configから設定を読み取ることは可能ですか?

4

2 に答える 2

12

これは、MicrosoftがAzureSDK1.3以降に完全なIIS機能を導入したためです。これの副作用は、RoleEntryPointが残りのWebアプリケーションから遮断されることです。

次のMicrosoftのブログ投稿からの抜粋は、表示されている内容を説明しています。

...完全なIISでは、RoleEntryPointはWaIISHost.exeで実行されます、Webサイトは通常のIISw3wp.exeプロセスで実行されます

...したがって、その構成はWaIISHost.exe.configというファイルにあると想定しています。したがって、Webプロジェクトでこの名前のファイルを作成し、[出力ディレクトリにコピー]プロパティを[常にコピー]に設定すると、RoleEntryPointがこれを適切に読み取ることができることがわかります。

上記の解決策とは別に、オプションとして、完全なIISモードではなくHosted Web Core(HWC)モードを使用することもできます。


更新-AzureSDK1.8で導入された変更

  • Azure SDK1.3-1.7はWaIISHost.exe.configを調べます

  • Azure SDK 1.8以降は、WebRoleProjectName.dll.configを調べます。

SDKの最新の変更により、プロジェクトにapp.configを配置できるようになり、ロールエントリポイントがそれにアクセスできるようになります。

于 2012-10-16T09:39:31.263 に答える
0

web.configあなたの、そしてあなたが実行しているコードはどこにありますか?

サブクラスのOnStart()メソッドにある場合は、同じプロジェクトのルートにRoleEntryPointあるエントリが表示されます。web.config通常、これはWebサイトではなく、Webデプロイプロジェクト自体です。これにより、Azureは1つのWeb展開の役割で複数のWebサイトをサポートできます。

于 2011-09-27T15:32:29.597 に答える