2015-08-17 31 views
1

我有一个ASP.NET MVC应用程序和一个静态类,我用它来管理我的缓存对象,我也在同一个项目中使用了一个WCF作为另一个源调用和更新相同缓存的回调。因此,我的问题是:假设我在我的网页上做了一些将我的缓存对象设置为值“A”的东西,现在我的WCF被调用,因此缓存将被设置为“B”,两种操作都可以工作,但每个人似乎都在不同的会话中,如果我调试了ASP.NET的操作,那么即使调用了我的WCF(这会使变量变为“B”),缓存的值也为“A”。在ASP.NET应用程序中的WCF上使用静态类

这是什么行为?我的意思是,是否有两个会话,一个用于ASP.NET应用程序,另一个用于WCF?

谢谢!

回答

2

它们运行在不同的环境中。您应该为两者使用共享缓存。即redis缓存。

+0

或AppFabric(尽管现在它已经在扩展支持)。但是,是的,分布式缓存将是解决它的一种方式。 –

+0

除了这个在网站和WCF服务之间共享会话的解决方案,我发现了一个如何与WCF共享aspnet会话的示例:http://blogs.msdn.com/b/wenlong/archive/2010/02/21/使用-asp-net-sessions-from-wcf.aspx –

0

所以,我认为我以前工作过,我是对的。事情是,它不适用于VS用来调试的IIS Express!当我部署在完整的IIS上时,它工作正常!

感谢大家帮助!

+0

由于IIS Express为每个项目创建一个实例,每个实例都有自己的AppDomain。每个AppDomain都共享静态变量。在IIS中,如果它们运行在相同的应用程序池和相同的工作进程中,它们运行在同一个AppDomain中,因此共享相同的静态变量。 – CodeCaster

+0

感谢您的解释! – Markissimo

相关问题