我有一个托管为托管应用程序的WCF服务。它充当WPF应用程序和ASP.net应用程序之间的中介。 WPF应用程序在Webbrowser控件中托管ASP.net应用程序。当用户尝试关闭webbrowser控件时,wpf应用程序调用wcf服务来检查Web应用程序是否正忙。 WCF对Web应用程序进行回调,该应用程序在启动时自行注册。但是,随着第二个Web应用程序工作进程崩溃,回调永远不会成功。 服务合同如下:
[ServiceContract(CallbackContract = typeof(IToolStatusNotifierServiceCallback))]
public interface IToolStatusNotifierService
{
[OperationContract(IsOneWay = true)]
void SubscribeToCanShutDown(string toolId);
[OperationContract(IsOneWay = true)]
void UnsubscribeToCanShutDown(string toolId);
[OperationContract]
void CanShutDownTool(string toolId);
}
回调合约如下:
[ServiceContract]
public interface IToolStatusNotifierServiceCallback
{
[OperationContract]
ToolCloseResponse OnCanToolShutDown(string toolId);
}
当web应用程序启动时,它调用SubscribeToCanShutDown,当wpf应用程序需要查询Web应用程序时,它调用CanShutDownTool。在同一方法中,回调发生在Web应用程序中。但是回调只会导致工作进程崩溃。 这在开发机器上运行良好,但在部署机器上都失败了.net框架4 我已经尝试设置UseSynchronizationContext = false并使回调异步,但没有解决问题。 谢谢你的帮助