【发布时间】:2011-08-02 07:48:22
【问题描述】:
创建 WCF 服务后,有没有什么方法可以在没有 IIS 的情况下部署它?我创建的服务将只在 LAN 内使用,我不希望主机运行 ASP.NET 服务器只是为了托管 WCF 服务。
我需要能够做到这一点的另一个原因是因为我将使用的一个 DLL 不能很好地与 ASP.NET 一起使用。
【问题讨论】:
创建 WCF 服务后,有没有什么方法可以在没有 IIS 的情况下部署它?我创建的服务将只在 LAN 内使用,我不希望主机运行 ASP.NET 服务器只是为了托管 WCF 服务。
我需要能够做到这一点的另一个原因是因为我将使用的一个 DLL 不能很好地与 ASP.NET 一起使用。
【问题讨论】:
您可以在 Windows 服务和 IIS 中托管 WCF 服务:
【讨论】:
您可以在任何 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 事件模型。
【讨论】: