.net 使用自定义ServiceHostFactory时是否需要Dispose()?

.net 使用自定义ServiceHostFactory时是否需要Dispose()?,.net,wcf,idisposable,.net,Wcf,Idisposable,使用自定义ServiceHostFactory时是否需要Dispose() 在我的WCF.svc文件中,我将自定义工厂定义为: 似乎没有调用Dispose(),因为调用服务的应用程序每次执行时都没有调用重写的CreateServiceHost()方法。(此外,除其他外,每次调用后都不会执行日志记录,我生成的trace.xml文件表示另一个进程正在使用它) 我的服务确实有装饰 [ServiceBehavior(InstanceContextMode=InstanceContextMode.Per

使用自定义ServiceHostFactory时是否需要Dispose()

在我的WCF.svc文件中,我将自定义工厂定义为:

似乎没有调用Dispose(),因为调用服务的应用程序每次执行时都没有调用重写的CreateServiceHost()方法。(此外,除其他外,每次调用后都不会执行日志记录,我生成的trace.xml文件表示另一个进程正在使用它)

我的服务确实有装饰
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
所以我想还有一些我不知道的事情正在发生。在创建服务实例的客户端应用程序中,我通过finally块处理引用,但是否需要在服务器端的工厂中执行类似的操作

    Finally
        service.Dispose()
    End Try

谢谢

服务主机工厂返回的是服务主机,而不是服务类的实例。工厂通常在每次激活服务时只调用一次,它返回的主机将被使用,直到IIS应用程序池被回收。服务实例由
IInstanceProvider
处理,而不是由服务主机处理(尽管在创建主机时,如果要处置服务实例,可以更改实例提供程序-有关实例提供程序的更多信息,请参阅和)


因此,简而言之,您不应该处置从服务主机工厂返回的服务(或者它是主机?)。如果要处理服务处置,应实现自己的实例提供程序。

服务主机工厂返回服务主机,而不是服务类的实例。工厂通常在每次激活服务时只调用一次,它返回的主机将被使用,直到IIS应用程序池被回收。服务实例由
IInstanceProvider
处理,而不是由服务主机处理(尽管在创建主机时,如果要处置服务实例,可以更改实例提供程序-有关实例提供程序的更多信息,请参阅和)


因此,简而言之,您不应该处置从服务主机工厂返回的服务(或者它是主机?)。如果您想处理服务处理,您应该实现自己的实例提供程序。

我们使用代理服务器运行,所以我想知道。。。如果服务主机是在特定的服务器上创建的,比如说代理,那么这是否会限制随后创建的实例的位置?我遇到一个问题,该服务的实例似乎无法访问。该服务实例将在服务主机运行的任何位置运行。感谢您的确认。了解这一点,并阅读您的博客,对提高我的理解有很大帮助。我们使用代理服务器运行,所以我想知道。。。如果服务主机是在特定的服务器上创建的,比如说代理,那么这是否会限制随后创建的实例的位置?我遇到一个问题,该服务的实例似乎无法访问。该服务实例将在服务主机运行的任何位置运行。感谢您的确认。理解这一点,阅读你的博客,对提高我的理解有很大帮助。