IIS 7.0中重命名应用程序

34

众所周知,在通过IIS Manager窗口界面编辑应用程序设置时,您不允许编辑应用程序别名。应用程序的别名显示为灰色(不允许更改)。但是在本文中,您可以了解如何通过命令行实用程序来完成此操作:

http://www.foliotek.com/devblog/rename-applications-and-virtual-directories-in-iis7/

但是有另一种方法可以做到这一点。您可以按照本文所述编辑设置文件:

http://learn.iis.net/page.aspx/150/understanding-sites-applications-and-virtual-directories-on-iis-7/#Configuration

在设置文件中,我只更改了应用程序元素的路径属性的值(“/Site1”),没有做其他任何更改:
<application path="/Site1" applicationPool="DefaultAppPool">
    <virtualDirectory
        path="/" 
        physicalPath="C:\Sites\Site1" />
</application>

问题在于我不知道这两种方式是否相同并且具有相同的结果。也许命令行实用程序(appcmd)除了重命名应用程序名称之外还做了一些其他工作?

2
devblog.foliotek.com的链接已更改。请使用http://www.foliotek.com/devblog/rename-applications-and-virtual-directories-in-iis7/。 - Simon Elms
5个回答

34

最近我也遇到过同样的问题,我认为使用appcmd会更好,因为就像你说的那样,我们不知道幕后还可能发生哪些其他变化。

例如:

appcmd list app

APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "Default Web Site/develop" (applicationPool:mypool)
APP "Default Web Site/develop/xyz" (applicationPool:mypool)

在我的情况下,我确实需要从子级开始重命名。否则,appcmd将找不到子网站。
appcmd set app "Default Web Site/develop/xyz" -path:/B455/xyz
appcmd set app "Default Web Site/develop" -path:/B455

之后

appcmd list app

APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "Default Web Site/B455" (applicationPool:mypool)
APP "Default Web Site/B455/xyz" (applicationPool:mypool)

注意:appcmd 工具可以在 %windir%\system32\inetsrv 目录下找到。

1
更新配置文件对我没有起作用。运行appcmd解决了问题。+1 - Perry
如果您提供了一个不可见的路径参数,应用程序可能不再容易访问以进行修复。当我尝试这样做时,该应用程序的身份验证设置并未随其新名称一起传递。请谨慎使用。 - Brian
1
好东西。对我们有用。 - justiceorjustus

13

最近我使用了appcmd,成功地更改了网站应用程序名称。我作为管理员运行了cmd提示符,然后执行了以下操作:

cd c:\windows\syswow64\inetsrv\
appcmd set app WebsiteName/applicationname -path:"/newapplicationname"

太棒了,完美解决了 :)


供参考。以下是查看已安装应用程序的方法: %systemroot%\syswow64\inetsrv\appcmd list app注意:如有需要,请将syswow64替换为system32。 - yazanpro

4

使用PowerShell非常容易:

rename-item IIS:\Sites\yoursitename\yourappname\ newappname

如果缺少IIS:\命名空间,请确保在服务器上安装了IIS管理脚本和工具。您可以从“服务器管理器”->“Web服务器角色”->“角色服务”->“管理工具”->“IIS管理”中进行安装。


4
可能需要将该模块导入到您的 PowerShell 会话中: 导入模块 WebAdministration:Import-Module WebAdministration - nodots

3
无论你使用哪种方法,这里发生的事情都是更改应用程序路径名称。
实际上并没有什么魔法。显然,任何依赖于旧路径名称的 Web 应用程序中的路径都需要重命名。
您可能会发现我对这个问题的回答有用,从而了解 IIS7 中虚拟目录和应用程序的机制:

Using ServerManager to create Application within Application


-1

我在使用appcmd方法时遇到了问题。我的应用程序使用Classic ASP“Enable Parent Paths=True”,并且使用该命令进行重命名会将其重置为False的默认值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接