IIS applicationHost.config更改未反映

时间:2015-04-21 12:09:48

标签: asp.net iis

我已经创建了一个测试网站,以利用Application Initialization Module提供的预热模块。

我已使用ScottGu's Blog以及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"

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

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

编辑:我已经做了很多挖掘和游戏,但我没有接近答案。首先,经过一些搜索,我发现了另一个applicationHost.config文件。我正在编辑的那个位于

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

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

%WINDIR%\ Syswow64资料\ INETSRV \设置\的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

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

1 个答案:

答案 0 :(得分:3)

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