用于在IIS 7中重建applicationHost.config的命令

时间:2013-02-13 00:11:36

标签: iis-7 windows-server-2008 http-status-code-401 applicationhost

有没有办法使用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会使主机名变灰。 / p>

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>

5 个答案:

答案 0 :(得分:50)

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

C:\inetpub\history\

答案 1 :(得分:1)

如果您只想修改当前活动的applicationHost.config,请查看以下文章:

Editing Applicationhost.config on 64 bit Win2008

正如文章所说,出于某种原因,applicationHost.config仅使用资源管理器可见(这解释了为什么我没有看到来自我的自定义文件管理器的文件),你可以使用记事本编辑它(同样,任何其他编辑器)而且你会遇到问题。)

答案 2 :(得分:0)

inetpub历史文件夹保存了我的屁股。我只是恢复了根文件夹中的两个文件,解决了wallah问题。

答案 3 :(得分:0)

首先备份所有配置文件!

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

祝你好运!

答案 4 :(得分:0)

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

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

其中CFXHISTORY_xxxxxxxxC:\inetpub\history\的子文件夹。

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

或者您也可以按照https://stackoverflow.com/a/14859645/2279059

中的说明从备份中复制文件