iis配置网站服务器配置不小心把网站删了,不会删除与 IIS 网站关联的信息 - Internet Information Services | Microsoft Docs...

在以编程方式删除网站期间不会删除与 IIS 网站关联的信息

12/11/2020

本文内容

本文帮助您解决在以编程方式删除网站期间不删除与 IIS 网站关联的信息的问题。

原始产品版本:   Internet Information Services 8.0,Internet Information Services 8.5

原始 KB 编号:   3202096

症状

请考虑以下情况:

通过使用对二进制公开的托管 API 的调用或对托管 API 的调用来 appcmd 删除 Microsoft.Web.Administration 网站。

在 IIS 7.5 Internet Information Services (版本中) 新建网站。

新网站仍使用已删除网站的旧元数据。

在此方案中,当您尝试访问新创建的网站时,将发生意外行为。 例如,您可能会在 Web 浏览器中收到 HTTP 503 - 服务不可用错误消息。

原因

当使用或 API 以编程方式执行 IIS 中现有网站的删除操作,并且该站点具有在 IIS 服务器的 ApplicationHost.config 文件的配置元素中定义的旧版属性 appcmd Microsoft.Web.Administration 时,会出现此问题。 在此方案中,不会删除标记中与网站 相关的信息。 如果在删除操作后创建了一个 ID 相同的新网站,则此新网站将与该旧网站的旧属性相关联。

解决方案

可以使用 IIS 管理控制台删除网站,而不是调用 appcmd 或 Microsoft.Web.Administration 。 此方法确保如果有与要尝试删除的网站关联的任何自定义旧属性,也会从 IIS 配置文件 (ApplicationHost.config) 。 这将防止这些属性意外与在重用旧已删除网站的 ID 的同一服务器上创建的新网站关联。

如果出于任何原因必须以编程方式删除网站并且无法使用 IIS 管理器控制台,可以添加两种解决方法之一,以确保通过元素与网站关联的旧属性的信息也会被删除。

解决方法 1:使用 appcmd 命令

如果使用 appcmd 删除网站,可以运行以下命令删除网站在 IIS 配置中可能具有的任何旧属性:

Appcmd clear config -section:customMetadata -[path='LM/W3SVC/']

备注

使用 appcmd 命令将参数替换为刚删除 的网站的标识符。

解决方法 2:使用对 Microsoft.Web.Administration 的调用

如果使用托管 API 调用删除网站,可以在删除网站后添加以下代码,以同时清除 IIS 配置元素中包含的旧 Microsoft.Web.Administration 属性:

string path = "LM/W3SVC/" + site.Id.ToString(CultureInfo.InvariantCulture);

string pathWithSlash = path + "/";

for (int i = customMetadata.Count - 1; i >= 0; i--) {

ConfigurationElement metadata = customMetadata[i];

string key = (string)metadata["path"];

if (key != null &&

(

key.Equals(path, StringComparison.OrdinalIgnoreCase) ||

key.StartsWith(pathWithSlash, StringComparison.OrdinalIgnoreCase))

)

{

customMetadata.RemoveAt(i);

}

}

备注

该 site 变量表示你刚刚使用 API 删除 Microsoft.Web.Administration 的网站。

重现步骤

在 Windows 2008 R2 / IIS 7.5 或 Windows 2012 R2 / IIS 8.5 服务器上:

安装 IIS 6 元数据库兼容性功能。

在 IIS 管理器中,创建第二个网站:调用 此 WebTest, 使其在任何所需应用程序池运行。

打开命令行提示符并导航 C:\inetpub\AdminScripts 到:

键入以下 adsutil.vbs SET w3svc/2/ServerSize "23" 命令:

这会将以下部分添加到应用程序文件中 W3SVC ApplicationHost.config 标记:

....

....

现在导航到 C:\windows\system32\inetsrv\ 命令提示符内部。

运行以下命令: appcmd delete site WebTest.

删除站点后,上述配置部分仍 存在于ApplicationHost.config。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值