2010-02-22 78 views
2

我爲web farm編寫應用程序,我想在服務器應用程序之間創建一個簡單的對等網絡,以便它們可以將消息傳遞給對方。例如,在放棄緩存項目時進行協調,或者增加共享計數器以獲得關鍵統計信息的更好共享視圖。不能在ASP.NET中使用WCF NetPeerTcpBinding?

但顯然這是不可能的。我曾在一個控制檯應用程序工作完全對等網絡的代碼,但是當我添加的代碼到ASP.NET網站,我得到了以下錯誤:

System event notifications are not supported under the current context. Server processes, for example, may not support global system event notifications.

[InvalidOperationException: System event notifications are not supported under the current context. Server processes, for example, may not support global system event notifications.] 
    System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +10259418 
    System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +539 
    // My code here where I call the proxy object's method to start the WCF call 

嗯,爲什麼不呢?這似乎是非常有用的!

有什麼辦法可以解決這個問題嗎?

+0

同樣的問題,看起來可能是對WAS主機的限制 – user80855 2010-06-25 01:17:27

回答

1

您的服務上運行的是什麼版本的IIS(假設IIS)? IIS 6比IIS 7更有限 - 它只支持HTTP激活。同樣,如果您嘗試在IIS 6中啓動對等客戶端,則可能由於相同原因而被阻止 - IIS無法將響應指向正確的工作進程。

您可以始終在Web服務器上將該服務實現爲Windows服務,並使用命名管道與ASP.NET網站進行通信。 (Windows服務將託管一個對等端點和一個命名管道端點,並且該站點將使用一個命名管道客戶端。該服務將使用[ServiceBehavior]屬性作爲單個實例運行。

+0

我試着在Windows Server 2008 R2(IIS 7.5)上運行一個小型點對點應用程序,我得到的是沒有安裝PNRP。修復通過安裝PNRP後,我得到了完全相同的錯誤。當我試圖在Windows 7的開發服務器上託管它時,我也遇到了同樣的錯誤。 – 2010-03-07 23:06:17

+0

由於在Server 2008上它不是默認的,我正在運行帶有PNRP的Windows 2008/IIS 7。 – 2010-03-22 01:37:37

+0

運行Windows服務對等與IIS進程通信的應用程序聽起來很有趣,但重要的是在IIS服務器之間創建一些團隊協作,而不會增加額外的依賴關係。如果需要一個額外的進程,我認爲在這一點上可能適用於像Velocity或Memcached這樣的完全分佈式緩存系統。 – 2010-03-22 01:39:18

0

我不確定這是可能的,因爲綁定保持其上下文的方式

我會建議有一個正常的http wcf服務,並在配置數據庫中註冊每個主機,甚至使用主題併發布Web服務器事件需要進行處理