Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# 从另一个ServiceHost C访问WCF中的ServiceHost_C#_Wcf_Servicehost - Fatal编程技术网

C# 从另一个ServiceHost C访问WCF中的ServiceHost

C# 从另一个ServiceHost C访问WCF中的ServiceHost,c#,wcf,servicehost,C#,Wcf,Servicehost,我有两个合约托管在两个servicehosts中我需要在第一个合约中有一个singleton对象,因此当另一个servicehost尝试从该类创建对象时,它只从第一个servicehost检索相同的对象 这可能意味着我需要找到其他方法来访问servicehost并从中获取对象,而不是创建一个新的。。有什么想法吗 提前感谢因此,我认为您可以自己创建服务类的实例,然后将该实例传递给两个服务主机。不过我还没有深入测试过 [ServiceBehavior(InstanceContextMode = In

我有两个合约托管在两个servicehosts中我需要在第一个合约中有一个singleton对象,因此当另一个servicehost尝试从该类创建对象时,它只从第一个servicehost检索相同的对象

这可能意味着我需要找到其他方法来访问servicehost并从中获取对象,而不是创建一个新的。。有什么想法吗


提前感谢

因此,我认为您可以自己创建服务类的实例,然后将该实例传递给两个服务主机。不过我还没有深入测试过

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class Calc: ICalc
{ 
}

var calc = new Calc();
var h1 = new ServiceHost(calc, baseAddress1);
var h2 = new ServiceHost(calc, baseAddress2);

使用依赖注入框架,如NInject或StructureMap,为描述singleton对象的接口定义基于singleton的实现我不认为我的问题是如何实现singleton,我已经做到了,这是因为一个端点servicehost的进程完全不同,这意味着当另一个端点尝试创建新对象时,它将始终找不到任何对象,因为第一个对象是在不同的processservicehost中创建的,这就是为什么我认为如果有接口,我需要从另一个servicehost中查找以访问servicehost的原因IMySingleton并使用DI容器并将其定义为singleton,那么您的两个服务主机实例只需从DI容器请求实现该接口的类,DI容器将保证两者都得到相同的实例singleton InstanceHanks rocket作为您的答案,但是您回答了一个1年前的问题我甚至没有代码来确保您的答案有效,所以我无法判断这是否有效。哦,没有看到日期,不要麻烦。