簡體   English   中英

我可以在Windows服務中托管WCF服務嗎?

[英]Can I host a WCF Service in a windows service?

我通過添加新項目-> WCF服務庫創建了WCF項目,當我在開發環境中運行它時,它將打開WCF測試客戶端。 我如何在未安裝Visual Studio的服務器上安裝此服務(我不想在IIS上托管它)。 我應該寫一個新的Windows服務嗎?

創建一個Windows服務項目。

將WCF服務添加到該項目。

在主要的Windows Service類(默認為Service1.cs)中,添加一個成員:

internal static ServiceHost myServiceHost = null;

修改OnStart()以使用WCF服務類型啟動新的ServiceHost:

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

        myServiceHost = new ServiceHost(typeof(MyService));
        myServiceHost.Open();
    }

修改OnStop():

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

將安裝和部署項目(安裝項目)添加到您的解決方案中。 將該項目的輸出設置為Windows Service項目的主要輸出。 生成安裝和部署項目時,應該會看到一個Setup.exe文件,可用於安裝服務。

請記住,您仍然需要設置端點和綁定。 考慮使用nettcpbinding進行此設置。

最后,請參考: 錯誤5:如果在安裝后啟動Windows Service時遇到問題,則啟動Windows Service時訪問被拒絕

您需要創建Windows服務項目,然后添加對WCF服務的引用並將其托管。 為了安裝該服務,您不需要Visual Studio,需要使用installutil.exe

在這里看看。

看一下TopShelf庫。 我用它來創建許多WCF服務。

提示:如果您打算編寫更多的WCF服務,那么閱讀端口共享可能是值得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM