inetmgr アプリ (IIS 7) を使用して手動でサイトを作成し、サイト名と物理的な場所を指定すると (およびアプリ プールを .net 4 に変更すると)、すべて正常に実行され、web.config ファイルが取得されます。
ただし、appcmd を使用してコマンド ラインで同じサイトをセットアップすると、何らかの理由で web.config ファイルが無視されます。inetmgr は、サイトが機能していて、そこにあるファイルを表示しますが、「構成エディター」の下には、 web.config ファイル。
コマンドライン app cmd はビルド スクリプトから実行されますが、これを行う方法は次のとおりです。
def create_web_site(site_name, site_location, site_port)
delete_command = "#{$file["appcmd"]} delete site #{site_name}"
result = system delete_command
puts "Failed to delete site on IIS: #{$?}" unless result
add_command = "#{$file["appcmd"]} add site /name:#{site_name} /bindings:http/*:#{site_port}: /physicalPath:#{site_location}"
result = system add_command
raise "Failed to add site on IIS: #{$?}" unless result
set_app_pool_command = "#{$file["appcmd"]} set app #{site_name}/ /applicationPool:\"ASP.NET v4.0\""
result = system set_app_pool_command
raise "Failed to bind site to .net 4 app pool on IIS: #{$?}" unless result
start_site_command = "#{$file["appcmd"]} start site #{site_name}"
result = system start_site_command
raise "Failed to start site on IIS: #{$?}" unless result
end
rake/ruby が appcmd を実行していて、サイトが存在する場合はサイトを削除してから新しいサイトを追加し、.net 4 アプリ プールを使用してサイトを開始していることを確認するために、rake/ruby を実際に知る必要はありません。これはすべて正常に機能し、私が知る限り同一の 2 つのサイトを確認できます (GUI を介して手動で作成しているサイトを除いて、競合を防ぐために別のポートを使用しています)。
サイトをセットアップするときに GUI が行う appcmd に欠けているものはありますか?