McA*_*hey 2 .net wcf idisposable
使用自定义ServiceHostFactory时是否需要Dispose()?
在我的 WCF .svc 文件中,我将自定义工厂定义为:
<%@ ServiceHost Factory="Service.ServiceHostFactory" %>
似乎没有调用 Dispose(),因为在调用服务的应用程序的每次执行时都没有调用重写的 CreateServiceHost() 方法。(此外,除其他外,每次调用后都不会执行日志记录,并且我生成的trace.xml 文件表明它正在被另一个进程使用)。
我确实装饰了该服务,
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
所以我预计还会发生一些我不知道的事情。在创建服务实例的客户端应用程序中,我通过finally块对引用进行Dispose()操作,但是是否有必要在服务器端的工厂中执行类似的操作?
Finally
service.Dispose()
End Try
Run Code Online (Sandbox Code Playgroud)
谢谢
服务主机工厂返回一个服务主机,而不是服务类的实例。该工厂通常在每次激活服务时只调用一次,并且使用它返回的主机,直到 IIS 应用程序池被回收为止。服务实例由 处理IInstanceProvider,而不是服务主机(尽管在创建主机时,如果您想要处置服务实例,则可以更改实例提供程序 - 有关实例提供程序的更多信息,请参阅http://blogs. msdn.com/b/carlosfigueira/archive/2011/05/31/wcf-extensibility-iinstanceprovider.aspx和http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iinstanceprovider.aspx) 。
简而言之,您不应该处置从服务主机工厂返回的服务(或者它是主机?)。如果您想处理服务处置,您应该实现自己的实例提供程序。
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |