如果我通过inetmgr应用程序(IIS 7)手动创建一个站点并为其提供站点名称和物理位置(以及将其应用程序池更改为.net 4),那么一切运行正常并获取web.config文件。
但是,如果我使用appcmd在命令行上设置相同的站点,由于某种原因忽略web.config文件,inetmgr显示站点正常工作,文件在那里,但在“Configuration Editor”下没有条目来自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手动创建的网站有另一个端口,以阻止冲突)。
在设置网站时,GUI是否为appcmd找不到东西?
答案 0 :(得分:1)
在修补问题之后,对于IIS不正确的文件夹之间的斜杠。这一切似乎都有效,但不会选择任何东西,所以我的网站目录是这样的:
C:/ some_folder / SOME_SITE
在我的脚本中我不得不将它们换成:
C:\ some_folder \ SOME_SITE
一切正常,但是因为“\”字符通常表示跳过或忽略后面的字符我只是将其作为第一个字符串上的字符串替换而不是将其作为正确开始的方式。