在没有 IIS 的情况下部署 WCF 服务

Posted

技术标签:

【中文标题】在没有 IIS 的情况下部署 WCF 服务【英文标题】:Deploying a WCF service without IIS 【发布时间】:2011-08-02 07:48:22 【问题描述】:

创建 WCF 服务后,有没有什么方法可以在没有 IIS 的情况下部署它?我创建的服务将只在 LAN 内使用,我不希望主机运行 ASP.NET 服务器只是为了托管 WCF 服务。

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

【问题讨论】:

【参考方案1】:

您可以在 Windows 服务和 IIS 中托管 WCF 服务:

How to: Host a WCF Service in a Managed Windows Service

Hosting and Consuming WCF Services

【讨论】:

如果我将 WCF 服务托管在 Windows 服务中,同一 LAN 上的其他机器是否仍然能够访问它? 是的,权限(和绑定)允许【参考方案2】:

您可以在任何 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 事件模型。

【讨论】:

以上是关于在没有 IIS 的情况下部署 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 IIS 中部署 Microsoft bot 应用程序以在没有 Azure 的情况下进行托管吗?

部署WCF Lib到IIS

Monotouch/WCF:如何在没有 svcutil 的情况下使用 wcf 服务

如何在 IIS 6.0 上部署我的 WCF 服务?

Silverlight+WCF项目Https配置

WCF 服务在没有管理员权限的情况下无法运行