将对象作为参数传递给ServiceHost

时间:2013-05-30 07:40:40

标签: wcf web-services hosting ninject

我正在尝试启动一个负责处理事情的项目。我把这个类称为CentralLogic类。当这个开始时,我想开始一个主机。主机在App.Config文件中有一些设置,如baseAddress和端点。

此主机可以与此CentralLogic类进行交互。我想将实例化的对象传递给这个主机。

目前,我正在尝试这样的事情:

centralLogic = new CentralLogic();
ServiceHost host = new ServiceHost(centralLogic, typeof(KLAService));
using (host) 
{ 
    host.Open();
    //Start a WPF UI. Also makes sure the host stays open
    //as long as the UI stays open.       
    Application app = new Application();
    app.Run(new ConfigurationWPF.MainWindow(centralLogic));

    host.Close();
}

KLAService的定义如下:

public class KLAService : IKLAService
{
    CentralLogic centralLogic;

    public KLAService(CentralLogic theCentralLogic)
    {
        centralLogic= theCentralLogic;
    }
    .....
}

这不起作用(ServiceHost的创建错误,无论是参数数量还是第二个参数)。我可以通过以下方式启动它而无需参数:

ServiceHost host = new ServiceHost(typeof(KLAService));

所以,问题是我不知道如何将对象传递给服务器。我该怎么做?

编辑:我尝试了以下内容:

centralLogic = new CentralLogic();
KLAService klaService = new KLAService(centralLogic);
using (ServiceHost host = new ServiceHost(klaService))
{ 
    host.Open();

    Application app = new Application();
    app.Run(new ConfigurationWPF.MainWindow(centralLogic));

    host.Close();
}

这会弹出InvalidOperationException

  

为了使用一个带有a的ServiceHost构造函数   服务实例,必须设置服务的InstanceContextMode   到InstanceContextMode.Single。这可以通过   ServiceBehaviorAttribute。否则,请考虑使用   采用Type参数的ServiceHost构造函数。

0 个答案:

没有答案