首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebServiceHostFactory和WebServiceHost实例生存期

WebServiceHostFactory和WebServiceHost实例生存期
EN

Stack Overflow用户
提问于 2011-10-12 20:40:50
回答 1查看 468关注 0票数 1

我正在试图找出WebServiceHost的生命周期。我认为它最初将是每个调用/每个请求(即,类似于为每个请求创建一个ASP.Net页面)。我已经创建了一个自定义WebServiceHostFactory和WebServiceHost,但注意到工厂和主机只创建了一次。

CustomWebServiceHostFactory覆盖CreateServiceHost,CustomWebServiceHost覆盖OnOpening,以提供一些诊断信息来跟踪生命周期。

我的服务文件

代码语言:javascript
复制
[ServiceContract]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public partial class ProductService
{
 ... // code
}

我的Global.asax文件

代码语言:javascript
复制
private void RegisterRoutes()
{
    RouteTable.Routes.Add(new ServiceRoute("products", new CustomServiceHostFactory(), typeof(ProductService)));
}

有谁能解释为什么两个请求会访问同一个CustomWebServiceHost实例,以及我将如何为每个服务请求创建一个新的主机?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-12 20:43:53

为每个新请求创建主机是没有意义的--服务主机是服务器端的WCF运行时--这段代码将

侦听传入的requests

  • dispatch对要处理的服务类的请求

创建服务主机是一个非常昂贵和广泛的操作--在IIS中托管的情况下,这将在第一个请求传入时“按需”完成,但是服务主机将在给定的时间内停留并被重用。

当自我托管时,通常在托管应用程序中创建一个服务主机实例,然后将该主机保持打开并处于活动状态,直到要关闭服务为止。

为每个请求创建的是服务类实例,它实际上处理传入的请求(而不是服务主机)。

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

https://stackoverflow.com/questions/7746293

复制
相关文章

相似问题

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