我创建了一个测试网站来利用应用程序初始化模块提供的热身模块。
我使用过ScottGu的博客和韦德·希尔莫的博客。
我安装了该模块并实现了对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文件,而我所做的更改并不存在;然而,该站点在Task中运行良好,如果我访问该站点,它将立即可用。停止并启动应用程序池会立即在任务管理器中弹出站点。
所以我的问题是,如果没有保存在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中配置方式相反的方法。我完全重新启动了服务器,并检查了配置,它仍然是我最初离开的状态,没有反映变化,而且两个站点都没有启动。
然后,我将Site2的配置更改为自动启动(如Site1),并重新启动服务器,但它仍然没有启动。然后我跑了:
%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"
它启动了,重新启动了服务器,并且启动了,尽管site 1还没有在启动时启动。所以我跑了:
%windir%\System32\inetsrv\appcmd set apppool "MySite" /startMode:AlwaysRunning
%windir%\System32\inetsrv\appcmd set app "MySite/" /preloadEnabled:true
并重新启动整个服务器,只是为了更好的措施,这两个网站都在启动。
发布于 2015-06-29 12:33:03
您是否使用notepad++进行这些更改并查看文件?如果是这样,请使用Windows附带的标准记事本(如果您已经用notepad2替换了记事本,则使用notepad2)。我猜notepad++默认只写32位(根据http://forums.iis.net/t/1151982.aspx?Opening+applicationHost+config+in+anything+other+than+Notepad)。
https://stackoverflow.com/questions/29771833
复制相似问题