我通過添加新項目 - > WCF服務庫創建了一個WCF項目,當我在開發環境中運行它時,它打開了WCF測試客戶端。如何在沒有安裝Visual Studio的服務器上安裝此服務(我不想在IIS上託管它)。我應該寫一個新的Windows服務?我可以在Windows服務中託管WCF服務嗎?
2
A
回答
5
創建一個Windows服務項目。
將您的WCF服務添加到此項目。
在主Windows服務類(默認爲Service1.cs),添加一個成員:
internal static ServiceHost myServiceHost = null;
修改的OnStart()開始新的ServiceHost與WCF服務類型:
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進行此設置。
如果您在安裝後啓動Windows服務時遇到問題,請參考:Error 5 : Access Denied when starting windows service。
0
您需要創建一個Windows服務項目,然後將引用添加到您的WCF服務並承載它。爲了安裝該服務,您不需要visual studio,則需要使用installutil.exe
。
看一看here。
0
查看TopShelf庫。我用它來創建一些WCF服務。
提示:如果您打算編寫更多的WCF服務,可能值得您一邊閱讀端口共享。
任何原因'myServiceHost'是內部的而不是私人的? – ProfK 2015-01-24 09:50:33
@ProfK號。再說一遍,我很久以前就寫過這個答案,所以當時在給定完整背景下可能有一個理由。 – 2015-04-23 19:38:43