簡體   English   中英

與Umbraco的控制台應用程序進行交互

[英]Interract with a console application from Umbraco

我在本地主機上安裝了Umbraco(v4.7)網站。

每次發布umbraco節點時,我都需要執行一個操作(例如,將日志記錄到控制台或文件中)。

因此,我需要從Umbraco網站與外部應用程序(例如控制台或Windows服務)進行交互...

我不需要使用控制台應用程序來操作umbraco網站,而是通過控制台(或windos servie)應用程序操作來響應umbraco事件。

我有

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
    }

    // ...

}

是否可以從該代碼中調用外部內容?

您嘗試做的事實際上是不可能的。 相反,您要做的是使用可以從umbraco應用程序觸發的某種偵聽器創建單獨的應用程序。

每當有動作發生時,事件就會在umbraco內部引發,您可以創建自定義代碼來觸發這些事件(例如您的示例)。 如果您做的事情很簡單(例如將已發布的節點記錄到日志文件中),建議您直接在umbraco Web流程中針對特定事件進行操作,而不要使事情復雜化。

但是,如果您真的需要做一些更高級的操作,而這是您在umbraco流程中無法完成的,那么我建議您編寫一個監聽事件的應用程序,然后通過點擊該應用程序內的網絡服務(或其他方法)來連接到該應用程序/觸發事件與此類似),使用umbraco事件處理程序。

您也許可以進行一些進程間調用來實際實現您最初要求的功能,但是我要說的是麻煩多於其應有的價值。 Web服務/ http偵聽器解決方案還允許您將應用程序與運行umbraco實例的Web服務器分開,以防您需要在兩台單獨的計算機上運行該應用程序。

另一種方法是將事件放在umbraco外部的消息隊列中,然后從您自己的應用程序監視此消息隊列。 我不確定您的解決方案應該有多高級,但這可能超出范圍!

暫無
暫無

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

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