如果我通过inetmgr应用程序(IIS 7)手动创建站点,并为其指定站点名称和物理位置(以及将其应用程序池更改为),则可以使用iis 7

问题描述:

。净4)它都运行良好,拿起web.config文件。如果我通过inetmgr应用程序(IIS 7)手动创建站点,并为其指定站点名称和物理位置(以及将其应用程序池更改为),则可以使用iis 7

但是,如果我使用appcmd在命令行上设置了相同的站点,它由于某种原因忽略了web.config文件,inetmgr显示站点正在工作并且文件在那里,但在“配置编辑器”下没有来自web.config文件的条目。

的命令行应用程序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 

你并不真的需要知道耙/ Ruby来看看它是APPCMD运行,如果它存在,删除一个站点,然后添加新站点,使用.net 4应用程序池然后启动该站点。这一切工作正常,我可以看到两个网站是相同的,据我所知(除了我手动通过GUI创建一个不同的端口,另一端停止冲突)。

在设置网站时,GUI为您做的appcmd中是否存在缺少的东西?

+0

经过进一步的调查后,似乎GUI创建目录与“\”,但appcmd目录使用“/”意味着由于某种原因web.config没有拿起,但一切似乎很好链接... – Grofit 2012-07-16 15:03:53

经过对此问题的修改之后,我们可以看到IIS之间的文件夹不正确。这一切都似乎工作,但不会挑不出什么了,所以在我的网站目录是这样的:

C:/ some_folder/SOME_SITE

在我的剧本,我不得不他们交换到:

C: \ some_folder \ some_site

一切工作正常,但是因为“\”字符通常表示跳过或忽略以下字符我只是将它作为字符串替换第一个字符串而不是输入它作为正确开始的方式。