gpt4 book ai didi

wcf - 在 WCF 服务关闭之前执行操作

转载 作者:行者123 更新时间:2023-12-04 04:23:28 25 4
gpt4 key购买 nike

我有一个托管在 IIS7 中的 WCF 服务。该服务有一个静态类,其中包含一个包含字符串(某种日志)的静态列表。它定期将条目写入文件或数据库。

然而,当 IIS 决定回收应用程序或出于任何原因终止时,静态字段中的条目将丢失。

有什么方法可以处理服务关闭类事件并从内存中保留数据?

谢谢

希德达尔

最佳答案

我已经通过带有自定义服务主机的 IIS 实现了多项服务(最初我这样做是为了实现 IErrorHandler 以进行全局错误处理)。

您需要两件事 - ServiceHost 的实现和 ServiceHostFactory 的实现,后者将调用您的自定义服务主机。例如(仅显示代码的相关部分):

public class MyCustomServiceHost : ServiceHost
{

protected override void OnClosing()
{

// logic to save off your static data
base.OnClosing();
}
}

public class MyCustomServiceHostFactory : ServiceHostFactory
{

protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{

return new MyCustomServiceHost(serviceType, baseAddresses);
}
}

在你的 .svc 文件中,你会有这样的东西:

<%@ ServiceHost Service="MyCompany.MyServiceName" Factory="MyCompany.MyCustomServiceHostFactory" %>
<%@ Assembly Name="MyCustomServiceHost" %>

这是一种方法(可以追溯到 .NET 3.5 时代);很可能还有其他方法可以做到这一点,但至少这应该会给您一些指导。

关于wcf - 在 WCF 服务关闭之前执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com