为了从头开始测试 IIS/WCF 实现的许多令人头疼的问题,我构建了 HelloWorld 服务,并且客户端(非常好)在这里完成了。我为 net.tcp 添加了端点,并且该服务在其自己的称为 HWIIS 7.5
的(在 Windows 7 上)下的两个绑定中端到端正常工作。ApplicationPool
我正在尝试使用已宣布的 AutoStart 和 Preload(或“预热缓存”)功能。我已经非常严格地遵循了此处和此处列出的说明(彼此非常相似,但有第二个意见总是好的)。这意味着我
1)设置应用程序池startMode
...
<applicationPools>
<!-- ... -->
<add name="HW" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />
</applicationPools>
2) ...启用serviceAutoStart
并设置指向我的指针serviceAutoStartProvider
<site name="HW" id="2">
<application path="/" applicationPool="HW" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" />
<!-- ... -->
</site>
3) ...并命名所述提供者,GetType().AssemblyQualifiedName
下面完整列出了该类的
<serviceAutoStartProviders>
<add name="PreWarmMyCache" type="MyWCFServices.Preloader, HelloWorldServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</serviceAutoStartProviders>
using System;
namespace MyWCFServices
{
public class Preloader : System.Web.Hosting.IProcessHostPreloadClient
{
public void Preload(string[] parameters)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\temp\PreloadTest.txt");
sw.WriteLine("Preload executed {0:G}", DateTime.Now);
sw.Close();
}
}
}
唉,所有这些手动配置,加上几个iisreset
电话,我什么也没得到。任务管理器中没有w3wp.exe
进程启动(尽管如果我启动 HelloWorldClient 我会得到它),没有文本文件,最重要的是,不满意。
无论是在 SO 上还是在更广泛的网络上,关于此功能的讨论都非常少,而且这里的几个类似问题也很少受到关注,所有这些都敲响了一两个警钟。也许是不必要的——有哪位专家曾在这条路上走过一两次,愿意插话吗?(如果您能推荐一个托管它的好地方,很高兴提供整个解决方案。)
编辑:我尝试将方法中的路径重置Preload
为相对App_Data
文件夹(另一个 SO 答案建议),没关系。此外,我了解到该w3wp.exe
过程会在简单浏览到 localhost 时触发。该过程消耗了令人印象深刻的 17MB 内存来提供其单个微小的 OperationContract,同时提供零预加载值的价格。17MB 的 ColdDeadCache。