簡體   English   中英

在多個Web應用程序工作進程中運行自托管的WCF

[英]Running WCF self-hosted in multiple web application worker processes

在Web應用程序中,我運行一個簡單的wcf主機

Uri baseAddress = new Uri("http://localhost:8080/hello");

using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress))
{
    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
    smb.HttpGetEnabled = true;
    smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
    host.Description.Behaviors.Add(smb);

    host.Open();
}

我在Global.asax/Start編寫了它。 因此,它將在Web應用程序的開頭打開並監聽端口8080 ,並且我可以通過http://localhost:8080/hello調用HelloWorldService定義的任何方法。 我已經在IIS上發布了它,它也可以正常運行,並且一切正常。

當我將Maximum Worker Processes增加到2或大於1時,就會出現問題。

關鍵是每個工作進程都是一個單獨的進程,要獲取端口8080,但OS不允許一個以上的進程來獲取端口。

看來問題可以通過處理異常來解決,因此只有一個進程可以獲取端口。 但這不是真的! 當具有端口的進程發生回收時,不能保證立即執行新的輔助進程。

注意:不能將主機和Web應用程序分開的任何解決方案,因為服務內部的所有業務都將由我的Web應用程序注入和控制。

我有個主意。 我將在每個進程中使用不同的端口並運行它們。 我也閱讀了《 應用程序請求路由》,以使用負載平衡功能將一個特定端口分散到工作進程獲得的多個不同端口。

在此處輸入圖片說明

請感謝我或給我解決方案。

您可以使用端口池。 在global.asax上,選擇未使用的端口之一。

Web應用程序可能不是托管WCF服務的不錯選擇。

暫無
暫無

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

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