空のAzureCloudServiceプロジェクトを作成し、そこにWebロールを追加しました。ロールプロジェクトにはweb.configファイルがあります。
F5キーを押すと、役割はComputeエミュレーターにデプロイされます。ロールバイナリがデプロイされているフォルダに移動しました。そこにはweb.configファイルがありません。
何が起こっていますか?これは、web.configファイルに「常にコピー」を設定しなかったためですか?私の役割はどのweb.configを使用しますか?
空のAzureCloudServiceプロジェクトを作成し、そこにWebロールを追加しました。ロールプロジェクトにはweb.configファイルがあります。
F5キーを押すと、役割はComputeエミュレーターにデプロイされます。ロールバイナリがデプロイされているフォルダに移動しました。そこにはweb.configファイルがありません。
何が起こっていますか?これは、web.configファイルに「常にコピー」を設定しなかったためですか?私の役割はどのweb.configを使用しますか?
ロールがフル IIS モード用に構成されている場合 (ホステッド Web コアとフル IIS の違いがわからない場合は、このブログ投稿を参照してください)、コンピューティング エミュレーターは IIS マネージャーで表示できる IIS に Web ロールをデプロイする必要があります。私のマシン (Azure SDK 1.5 を実行しています) では、デプロイされた Web ロールの物理パスはソース コード ディレクトリです。
web.config は、開発環境のコンテンツとしてアセンブリにコンパイルされ、ステージング/製品のように直接アクセスできないと思います。必要なだけコンテンツとしてマークされている場合は、常にコピーを使用する必要はありません。を使用Environment.CurrentDirectory
して、Web ルート パスを確認できます。
Windows Azure アプリケーションで構成を保存するための推奨される方法は ServiceConfiguration.cscfg ファイルですが、通常の .NET 構成ファイルを使用したい場合が依然として多くあります (特に .NET システム コンポーネントまたは再利用可能なフレームワークを構成する場合)。特に、Windows Azure 診断を使用するときは常に、.NET 構成ファイルで DiagnosticMonitorTraceListener を構成する必要があります。
Web ロール プロジェクトを作成すると、Visual Studio によって .NET 構成用の web.config ファイルが作成されます。Web アプリケーションはこの情報にアクセスできますが、RoleEntryPoint コードは Web サイトの一部として実行されていないため、アクセスできません。前述のように、WaIISHost.exe というプロセスの下で実行されるため、その構成が WaIISHost.exe.config というファイルにあると想定されます。したがって、Web プロジェクトでこの名前のファイルを作成し、[出力ディレクトリにコピー] プロパティを [常にコピー] に設定すると、RoleEntryPoint がこれを問題なく読み取ることができることがわかります。これは、同じプロジェクトに 2 つの .NET 構成ファイルがあると私が考えることができる唯一のケースの 1 つです。
すべての情報は Azure チーム ブログからのもので、私はこのソリューションをうまく使用しています - http://blogs.msdn.com/b/windowsazure/