【问题标题】:appcmd created site ignoring asp.net web.config file with iis 7appcmd 使用 iis 7 创建了忽略 asp.net web.config 文件的站点
【发布时间】:2012-07-16 13:44:20
【问题描述】:

如果我通过 inetmgr 应用程序 (IIS 7) 手动创建站点并为其提供站点名称和物理位置(以及将其应用程序池更改为 .net 4),它一切运行正常并获取 web.config文件。

但是,如果我使用 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

您实际上不需要知道 rake/ruby 就可以看到它正在运行 appcmd 并删除一个站点(如果存在),然后使用 .net 4 应用程序池添加新站点,然后启动该站点。这一切都很好,据我所知,我可以看到两个相同的站点(除了我通过 GUI 手动创建的站点与另一个站点的端口不同以停止冲突)。

在设置站点时,GUI 为您执行的 appcmd 中是否缺少某些内容?

【问题讨论】:

  • 经过进一步调查,GUI 似乎使用“\”创建目录,但 appcmd 目录使用“/”,这意味着由于某种原因 web.config 未被拾取,但一切似乎都已链接很好……

标签: asp.net iis web-config appcmd


【解决方案1】:

解决这个问题后,文件夹之间的斜线对 IIS 不正确。这一切似乎都可以工作,但什么都不会,所以我的网站目录是这样的:

c:/some_folder/some_site

在我的脚本中,我不得不将它们换成:

c:\some_folder\some_site

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

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 2012-09-15
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多