1

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 に欠けているものはありますか?

4

1 に答える 1

1

問題をいじくり回した後、IIS ではフォルダー間のスラッシュが正しくないことが原因です。それはすべて動作しているように見えますが、何も拾わないので、私のサイトディレクトリは次のようなものでした:

c:/some_folder/some_site

私のスクリプトでは、それらを次のように交換する必要がありました。

c:\some_folder\some_site

すべてが正常に機能しましたが、「\」文字は通常、次の文字をスキップまたは無視することを意味するため、最初の文字列を正しい方法で入力するのではなく、最初の文字列の文字列置換として実行しました。

于 2012-07-16T15:12:12.357 に答える