Asp.net SynchronizationContext.Current在不同的应用程序域上运行时为空
我在一台机器上运行一个Web应用程序,在另一台机器上运行服务(即,两者都在不同的应用程序域中)。我的服务层中有一个工作流服务,它从SynchronizationContext.Current获取Synchronization上下文。我得到SynchronizationContext.Current始终为null。但是,如果我在同一台机器(即同一个appdomain)上运行我的应用程序和服务层,SynchronizationContext.Current就是AspNetSynchronizationContext,它可以正常工作。有人能帮我解决这个问题以运行不同的应用程序域吗。同步上下文通常由某种框架创建,如ASP.NET、WPF、WinForms等。听起来,当您在自己的进程中运行服务时,您没有使用任何框架来实现这一点 还值得一提的是SynchronizationContext.Current通常只返回当前线程的同步上下文,因此如果您从错误的线程调用它,它几乎肯定会返回null 如果没有可用的同步上下文,则始终可以创建自己的同步上下文。本文介绍了如何:Asp.net SynchronizationContext.Current在不同的应用程序域上运行时为空,asp.net,asp.net-mvc-4,appdomain,Asp.net,Asp.net Mvc 4,Appdomain,我在一台机器上运行一个Web应用程序,在另一台机器上运行服务(即,两者都在不同的应用程序域中)。我的服务层中有一个工作流服务,它从SynchronizationContext.Current获取Synchronization上下文。我得到SynchronizationContext.Current始终为null。但是,如果我在同一台机器(即同一个appdomain)上运行我的应用程序和服务层,SynchronizationContext.Current就是AspNetSynchronizatio
我通过过度隐藏同步上下文解决了这个问题
if (syncContext == null)
{
SynchronousSynchronizationContext sync = new SynchronousSynchronizationContext();
syncContext = sync;
}
class SynchronousSynchronizationContext : SynchronizationContext
{
public override void Post(SendOrPostCallback d, object state)
{
this.Send(d, state);
}
}