将WCF服务从IIS迁移到自托管主机。我该怎么做?

时间:2011-11-21 12:11:38

标签: wcf

我目前正在IIS 7.5上托管WCF服务。

问题是我需要在会话期间保存数据(使用静态成员),但AppPool回收会继续删除所有缓存数据。

根据我的理解,我唯一的解决方案是自我托管服务。 我不知道如何做到这一点以及利弊是什么。 这真的是我唯一的选择吗?

更新

看起来有一个不同的问题。 我将主机从IIS更改为在控制台应用程序上自托管,我发现了一个导致应用程序崩溃的错误。我猜这是数据丢失的原因,而不是应用程序池的回收......

2 个答案:

答案 0 :(得分:2)

这似乎不是从IIS迁移到Windows服务的好理由。为什么不通过

禁用应用程序池回收
  

空闲超时(分钟)= 0

     

“常规时间间隔(分钟)”= 0

所以永远不会回收

另外

  

Disable Recycling for configuration Changes = true

这些设置存在于AppPool的高级设置中

更新:如何

  

“禁用重叠回收”= true

AppPool回收设置enter image description here

答案 1 :(得分:0)

如果这是问题,我认为您将缓存存储在内存中。我们可以将缓存存储在磁盘,数据库或任何您自定义的位置。所以不需要将您的应用程序从IIS移动到自托管。

http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-2010-and-net-4-0-series.aspx