2015-08-17 78 views
0

我在本地主機上安裝了Umbraco(v4.7)站點。與Umbraco的控制檯應用程序交互

每次發佈umbraco節點時,我都需要執行一個操作(假設記錄到控制檯或文件)。

所以我需要與外部應用程序(如控制檯或Windows服務)從一把umbraco網站互動...

我並不需要操縱一把umbraco網站與控制檯應用程序,而是應對一把umbraco事件與控制檯(或windos服務)應用程序操作。

我已經

public class ContentEvents : umbraco.BusinessLogic.ApplicationBase 
{ 

    void PlumbEvents() 
    { 
     // ... 
     Document.AfterPublish += new Document.PublishEventHandler(
                 Document_AfterPublish); 
     // ... 
    } 

    void Document_AfterPublish(Document sender, PublishEventArgs e) 
    { 
     // HERE I NEEDD TO CALL BY EG 
     // "MyExternalApplication" + "sender" as parameter 
     // where "MyExternalApplication" could be 
     // a ConsoleApplication or a WindowsService 
    } 

    // ... 

} 

是它可以調用一些來自外部的代碼?

+0

我對Umbraco沒有任何的瞭解,但在處理進程間消息時,首先想到的就是管道。不知道這是否適用於網站。 – Kilazur

回答

1

你想要做的事情是不可能的。你會做的是使用某種可以從umbraco應用程序觸發的偵聽器來創建單獨的應用程序。

事件在umbraco內部發生,每當一個操作發生時,您可以創建觸發這些事件的自定義代碼(如您的示例)。如果你正在做一些非常簡單的事情(將發佈的節點記錄到日誌文件中),我建議你直接在你的umbraco web進程中對該特定事件進行操作,而不是過於複雜。

但是,如果你真的需要做一些更高級的事情,不能在你的umbraco過程中完成,我會建議編寫一個應用程序來監聽事件,然後連接到該應用程序/通過點擊一個web服務來觸發事件應用程序(或類似的東西),使用umbraco事件處理程序。

您可能可以進行一些進程間調用,以實際實現您最初要求的內容,但我會說它比它的價值更麻煩。 Web服務/ http偵聽器解決方案還允許您從運行umbraco實例的Web服務器中分離出應用程序,以防需要在兩臺獨立的計算機上運行該應用程序。

這樣做的另一種方法可能是將事件排入umbraco之外的消息隊列中,然後從您自己的應用程序中觀看此消息隊列。我不確定你的解決方案應該有多高級,但這可能會超出範圍!

+0

我把messageQueue解決方案。非常感謝。 – Serge

相關問題