20

有没有办法使用 Windows 命令在 IIS 7 中重建 applicationHost.config 文件?或者,如果您可以通过修改此文件来帮助我解决问题,那也很好。将此文件与其他服务器进行比较时,我注意到在删除站点和一些应用程序池后丢失或不同的非常重要的部分。

我绝不是 IIS 7 方面的专家,但我已经使用它 7 年了。我确信已经为新站点配置执行了所有正确的步骤,但它仍然给我这个错误,"401.1 "You are not authorized to view this page. You do not have permission to view this directory or page using the credentials that you supplied."

C:\Windows\System32\inetsrv\config\applicationHost.config

这发生在一台不存在 IIS APPPOOL{app pool user} 的机器上,所以我们从来没有使用过这个用户,就像我通常在配置权限时所做的那样。然而,我们上周确实为 IIS_IUSRS(该组中包含 IUSR)添加了适当的权限,并且该站点运行良好。我们正在使用 Windows 身份验证,并且所有其他身份验证方法都已关闭。没有虚拟目录。我们正在使用 .NET 4.0、Classic 和 32 位应用程序(在高级设置下)。

我们必须通过在绑定的“C:\Windows\System32\inetsrv”中执行以下命令来手动更新主机名,因为当 VeriSign SSL 证书添加到绑定时,IIS 会使主机名变灰。

appcmd set site /site.name:"himc" /+bindings.[protocol='https',bindingInformation='*:443:subdomain.domain.com']

“坏”网络服务器上缺少的部分:

1 - 存在于“好”框中,缺少“坏”框

<customMetadata>
    <key path="LM/W3SVC/INFO">
        <property id="4012" dataType="String" userType="1" attributes="Inherit" value="NCSA Common Log File Format,Microsoft IIS Log File Format,W3C Extended Log File Format,ODBC Logging" />
        <property id="2120" dataType="MultiSZ" userType="1" attributes="None" value="400,0,,,0&#xA;" />
    </key>
</customMetadata>

2 - 存在于“好”框中,缺少“坏”框

    <asp>
        <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
    </asp>

3 - 此部分存在于“好”框上,但只有 2.0(前 2 行)存在于“坏”框上。

<isapiFilters>
    <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
    <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />
    <filter name="ASP.Net_2.0_for_V1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
    <filter name="ASP.Net_4.0_64bit" path="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness64" />
    <filter name="ASP.Net_4.0_32bit" path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness32" />
</isapiFilters>

4 - 此部分存在于“坏”框上,但在“好”框上缺失

    <applicationDependencies>
        <application name="Active Server Pages" groupId="ASP" />
    </applicationDependencies>

5 - “好”框上缺少 ssiExecDisable 属性

    <serverSideInclude ssiExecDisable="false" />

6 - “坏”框上缺少部分

        <authentication>
            <anonymousAuthentication enabled="false" />
            <windowsAuthentication enabled="true" />
        </authentication>
4

5 回答 5

68

显然,Microsoft 将这些文件的历史记录保存在:

C:\inetpub\history\
于 2013-02-13T17:41:45.670 回答
4

首先备份所有配置文件!

显然,IIS 将配置文件的历史记录保存在 C:\inetpub\history 中。所以你需要做的是记住最后一个已知日期 IIS 工作正常,然后从 c:\inetpub\history 复制配置文件的内容并替换 c:\windows\system32\inetsrv\config 中的配置文件。

祝你好运!

于 2017-10-16T15:30:45.570 回答
1

如果您只想修改当前活动的 applicationHost.config 看看这篇文章:

在 64 位 Win2008 上编辑 Applicationhost.config

正如文章所说,由于某种原因 applicationHost.config 仅使用资源管理器可见(这解释了为什么我没有从我的自定义文件管理器中看到文件)并且您可以使用记事本毫无问题地对其进行编辑(再次,任何其他编辑器和您)会遇到问题)。

于 2014-08-12T15:24:01.360 回答
0

要安装旧配置的备份,可以使用以下命令:

c:\windows\system32\inetsrv\appcmd restore backup CFXHISTORY_xxxxxxxx

CFXHISTORY_xxxxxxxx的子文件夹在哪里C:\inetpub\history\

除了将文件从该文件夹复制到当前配置之外,不确定该命令的作用,但您可能应该使用它,以防它做一些特殊的事情。

或者您可以按照https://stackoverflow.com/a/14859645/2279059中的说明从备份中复制文件

于 2019-10-11T11:50:05.577 回答
-1

inetpub 历史文件夹救了我的命。我只是恢复了根文件夹中的两个文件,wallah 问题就解决了。

于 2017-01-18T21:11:19.473 回答