部署不带IIS的WCF服务

时间:2011-04-10 01:38:06

标签: asp.net wcf

创建WCF服务后,有没有办法在没有IIS的情况下部署它?我创建的服务只能在局域网中使用,我宁愿让主机只运行一个ASP.NET服务器来托管WCF服务。

我需要能够做到这一点的另一个原因是因为我将使用的其中一个DLL在ASP.NET中不能很好地工作。

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

您可以在任何EXE中托管WCF服务,而不仅仅是Windows服务。你必须编写一些代码来托管,但这很简单:

using System;
using System.ServiceModel;
using System.ServiceProcess;

namespace MyService.Hosts
{
    public partial class MyWindowsService : ServiceBase
    {
        ServiceHost host;

        public MyWindowsService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            Type serviceType = typeof(MyWcfService);
            host = new ServiceHost(serviceType);
            host.Open();
        }

        protected override void OnStop()
        {
            if(host != null)
               host.Close();
        }
    }
}

顺便说一句,如果使用IIS进行部署,则可以免费获得IIS提供的所有附加功能,包括简单的Web部署,集成安全性和ASP.NET事件模型。