Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET应用程序中的WCF上使用静态类_C#_Asp.net_Wcf - Fatal编程技术网

C# 在ASP.NET应用程序中的WCF上使用静态类

C# 在ASP.NET应用程序中的WCF上使用静态类,c#,asp.net,wcf,C#,Asp.net,Wcf,我有一个ASP.NET MVC应用程序,它带有一个静态类,我用它来管理我的缓存对象,我在同一个项目中有一个WCF,我用它作为另一个源调用和更新同一缓存的回调 所以,我的问题是:假设我在我的网页上做了一些事情,将我的缓存对象设置为值“A”,现在调用我的WCF,以便将缓存设置为“B”,这两个操作都可以工作,但每个操作似乎处于不同的会话中,如果我调试ASP.NET的一个操作,那么即使调用了我的WCF,缓存的值也是“A”(这将使变量转到“B”) 这是什么行为?我的意思是,是否有两个会话,一个用于ASP.

我有一个ASP.NET MVC应用程序,它带有一个静态类,我用它来管理我的缓存对象,我在同一个项目中有一个WCF,我用它作为另一个源调用和更新同一缓存的回调

所以,我的问题是:假设我在我的网页上做了一些事情,将我的缓存对象设置为值“A”,现在调用我的WCF,以便将缓存设置为“B”,这两个操作都可以工作,但每个操作似乎处于不同的会话中,如果我调试ASP.NET的一个操作,那么即使调用了我的WCF,缓存的值也是“A”(这将使变量转到“B”)

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


谢谢!

它们在不同的上下文中运行。你应该对两者都使用共享缓存。例如redis缓存。

所以,我认为我以前使用过它,我是对的。问题是,它在VS用于调试的IIS Express上不起作用!当我在完整的IIS上部署时,它起作用了


感谢所有帮助过它的人!

或AppFabric(尽管现在它已获得扩展支持)。但是,是的,分布式缓存将是解决此问题的一种方法。除了在网站和WCF服务之间共享会话的解决方案外,我还发现了一个如何与WCF共享aspnet会话的示例:因为IIS Express为每个项目启动一个实例,每个实例都有自己的AppDomain。静态变量为每个AppDomain共享。在IIS中,如果在相同的应用程序池和工作进程,它们运行在相同的AppDomain中,因此共享相同的静态变量。感谢您的解释!