我目前正在运行最新预览(#8),我正在使用WCF服务。我使用MEF读取WCF服务库。我注意到,每当我对从库中读取的应用程序中的某个库执行任何操作时,这些WCF库的AppDomain为1,但是每当WCF服务收到通知时,它的AppDomain为2?有没有办法确保获得通知的WCF服务与通过MEF读取的WCF服务相同(或在相同的AppDomain中)?
我基本上需要读取我的WCF服务上的配置数据,并确保数据始终存储在内存中,以便在收到任何通知时,我使用内存中的数据来帮助分析发送的内容。
答案 0 :(得分:0)
我明白了。我只需要让我的应用程序通过MEF读取DLL,告诉DLL是服务主机。唯一的缺点是DLL必须告诉应用程序使用所有绑定和端点,以便应用程序可以设置正确的服务主机。
以下是我所做的一些示例(只是为了使它工作,它没有代码来询问DLL的设置):
foreach (MYINTERFACE mod in this.Modules)
{
ServiceHost serviceHost = new ServiceHost(
mod, new Uri[] { new Uri("BINDING URL") });
var binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
var serviceEndpoint = serviceHost.AddServiceEndpoint(
typeof(ENDPOINT TYPE), binding, "");
serviceHost.Open();
this.ServiceHosts = new List<ServiceHost>();
this.ServiceHosts.Add(serviceHost);
}