我可以在Windows服务中托管WCF服务吗?

Dus*_*sty 2 .net wcf

我通过转到Add New Project - > WCF服务库创建了一个WCF项目,当我在开发环境中运行它时,它打开了WCF测试客户端.如何在未安装Visual Studio的服务器上安装此服务(我不想在IIS上托管它).我应该写一个新的Windows服务吗?

Jus*_*les 5

创建Windows服务项目.

将WCF服务添加到此项目.

在主Windows Service类(默认为Service1.cs)中,添加一个成员:

internal static ServiceHost myServiceHost = null;
Run Code Online (Sandbox Code Playgroud)

修改OnStart()以使用您的WCF服务类型启动新的ServiceHost:

 protected override void OnStart(string[] args)
    {
        if (myServiceHost != null)
        {
            myServiceHost.Close();
        }

        myServiceHost = new ServiceHost(typeof(MyService));
        myServiceHost.Open();
    }
Run Code Online (Sandbox Code Playgroud)

修改OnStop():

protected override void OnStop()
    {
        if (myServiceHost != null)
        {
            myServiceHost.Close();
            myServiceHost = null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

将安装和部署项目(安装项目)添加到您的解决方案.将该项目的输出设置为Windows服务项目的主要输出.在构建安装和部署项目时,您应该看到可用于安装服务的Setup.exe文件.

请记住,您仍需要设置端点和绑定.请考虑使用nettcpbinding进行此设置.

最后一点,参考:错误5:如果在安装后启动Windows服务时遇到问题,则在启动Windows服务时拒绝访问.