首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AutoStart/预热功能在IIS 7.5 / WCF服务中不起作用

AutoStart/预热功能在IIS 7.5 / WCF服务中不起作用
EN

Stack Overflow用户
提问于 2012-05-06 12:43:32
回答 4查看 9.2K关注 0票数 16

为了从头开始测试IIS/WCF实现的许多令人头疼的问题,我构建了HelloWorld服务,客户机(非常好地)遍历了here。我为net.tcp添加了端点,对于IIS 7.5 (在Windows7上)下的两种绑定,该服务都可以在它自己的ApplicationPool HW中正常工作。

我正在尝试的是宣布的AutoStart和预加载(或“预热缓存”)功能。我非常仔细地遵循了herehere的说明(彼此非常相似,但总能有不同的意见)。这意味着我

1)设置应用程序池startMode...

<applicationPools> 
     <!-- ... -->
     <add name="HW" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" /> 
</applicationPools>

2) ...enabled serviceAutoStart并设置指向我的serviceAutoStartProvider的指针

<site name="HW" id="2">
    <application path="/" applicationPool="HW" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" />
    <!-- ... -->
</site>

3) ...and指定了所述提供程序,类的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进程在简单地浏览本地主机时触发。该进程消耗了令人印象深刻的17MB内存来提供其单个微型OperationContract,而价格提供的预加载价值为零。17MB的ColdDeadCache。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10468167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档