如果我通过 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 应用程序池添加新站点,然后启动该站点。这一切都很好,据我所知,我可以看到两个相同的站点(除了我通过 GUI 手动创建的站点与另一个站点具有不同的端口以停止冲突)。
appcmd 中是否缺少 GUI 在设置站点时为您做的一些事情?