IIS applicationHost.config 更改未反映

IIS applicationHost.config changes not reflecting

我创建了一个测试网站来使用 Application Initialization Module 提供的热身模块。

我用过ScottGu's Blog as well as Wade Hilmo's Blog.

我已经安装了模块并对 applicationHost.config 文件进行了更改并重新启动了服务器:

<applicationPools>
    <add name="MySite" autoStart="true" startMode="AlwaysRunning" managedRuntimeVersion="v4.0" />
</applicationPools>

<sites>
    <site name="MySite" id="4" serverAutoStart="true">
        <application path="/" applicationPool="MySite" preloadEnabled="true">
            <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\MySite" />
        </application>
    </site>
</sites>

服务器重新启动后,我检查了任务管理器,但我的网站没有 运行。因此,然后删除更改并使用 AppCmd 从命令提示符执行此操作:

%windir%\System32\inetsrv\appcmd set apppool "MySite" /autoStart:true
%windir%\System32\inetsrv\appcmd set apppool "MySite" /startMode:AlwaysRunning
%windir%\System32\inetsrv\appcmd set app "MySite/" /preloadEnabled:true
%windir%\System32\inetsrv\appcmd stop apppool "MySite"
%windir%\System32\inetsrv\appcmd start apppool "MySite"

Bobs 你叔叔,它工作得很好。然后我重新启动服务器并再次检查 applicationHost.config 文件,我所做的更改不存在;但是该网站在任务管理器中 运行 正常,如果我访问该网站,它会立即可用。停止并启动应用程序池会看到该站点立即在任务管理器中弹出。

所以我的问题是,如果不在 applicationHost.config 文件中,设置存储在哪里?!

编辑:我已经进行了大量的挖掘和研究,但离答案还很远。首先,经过一番搜索,我发现还有另一个 applicationHost.config 文件。我一直在编辑的那个位于

%windir%\System32\inetsrv\config\applicationHost.config

第二个显然与 32 位有关,但第一个 applicationHost.config 清楚地显示了 32 位网站。尽管如此,第二个也没有反映出我的变化

%windir%\SysWOW64\inetsrv\config\applicationHost.config

我搜索了 applicationHost.config 它找到了它的其他几个副本,但看起来更像是它们的初始/备份副本。

然后我创建了第二个网站,这两个网站现在配置如下:

<applicationPools>
    <add name="MySite" autoStart="true" startMode="AlwaysRunning" managedRuntimeVersion="v4.0" />
    <add name="MySite2" autoStart="true" startMode="OnDemand" managedRuntimeVersion="v4.0" />
</applicationPools>

<sites>
    <site name="MySite" id="1" serverAutoStart="true">
        <application path="/" applicationPool="MySite" preloadEnabled="true">
            <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\MySite" />
        </application>
    </site>
    <site name="MySite2" id="2" serverAutoStart="true">
        <application path="/" applicationPool="MySite" preloadEnabled="false">
            <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\MySite" />
        </application>
    </site>
</sites>

第一个站点应该自动启动,第二个站点应该按需启动。

然后我 运行 以下 AppCmd 命令:

%windir%\System32\inetsrv\appcmd set apppool "MySite" /startMode:OnDemand
%windir%\System32\inetsrv\appcmd set app "MySite/" /preloadEnabled:false

%windir%\System32\inetsrv\appcmd set apppool "MySite2" /startMode:AlwaysRunning
%windir%\System32\inetsrv\appcmd set app "MySite2/" /preloadEnabled:true

以与 applicationHost.config 中的配置相反的方式配置它们。我完全重新启动了服务器并检查了配置,它仍然是我最初离开的样子,没有反映出变化,两个站点都没有启动。

然后我将站点 2 的配置更改为自动启动(对于站点 1)并重新启动服务器,但它仍然没有启动。然后我 运行:

%windir%\System32\inetsrv\appcmd set apppool "MySite2" /startMode:AlwaysRunning
%windir%\System32\inetsrv\appcmd set app "MySite2/" /preloadEnabled:true
%windir%\System32\inetsrv\appcmd stop apppool "MySite2"
%windir%\System32\inetsrv\appcmd start apppool "MySite2"

它启动了,重新启动了服务器,它启动了,尽管站点 1 仍然没有在启动时启动。所以我 运行:

%windir%\System32\inetsrv\appcmd set apppool "MySite" /startMode:AlwaysRunning
%windir%\System32\inetsrv\appcmd set app "MySite/" /preloadEnabled:true

并再次重新启动整个服务器只是为了更好的衡量,两个站点都在启动。

您是否使用记事本++进行这些更改和查看文件?如果是这样,请使用 Windows 附带的标准记事本(如果您已将记事本替换为记事本 2,则使用记事本 2)。我想 notepad++ 默认情况下只写入 32 位(根据 http://forums.iis.net/t/1151982.aspx?Opening+applicationHost+config+in+anything+other+than+Notepad)。