与Umbraco的控制台应用程序交互

时间:2015-08-17 11:58:18

标签: c# .net umbraco4

我在localhost上安装了一个Umbraco(v4.7)站点。

每次发布​​umbraco节点时,我都需要做一个动作(让我们说出登录到控制台或文件)。

所以我需要从Umbraco网站与外部应用程序(如Console或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
    }

    // ...

}

是否可以从该代码中调用外部内容?

1 个答案:

答案 0 :(得分:1)

你真正想做的事情是不可能的。你要做的是用你可以从umbraco应用程序触发的某种监听器创建你的独立应用程序。

每当动作发生时,都会在umbraco内部引发事件,您可以创建触发这些事件的自定义代码(例如在您的示例中)。如果您正在做一些非常简单的事情(将已发布的节点记录到日志文件中),我建议您直接在umbraco Web进程中针对该特定事件执行此操作,而不是过度复杂化。

但是如果你真的需要做一些在你的umbraco过程中无法完成的更高级的事情,我建议编写一个应用程序来监听事件,然后通过点击该应用程序内的web服务来连接到该应用程序/触发事件(或类似的东西),使用umbraco事件处理程序。

您可以进行一些进程间调用以实际实现您最初要求的内容,但我说它比它的价值更麻烦。 Web服务/ http侦听器解决方案还允许您将应用程序与运行umbraco实例的Web服务器分开,以防您需要在两台不同的计算机上运行它。

另一种方法是将事件排在umbraco外部的消息队列中,然后从您自己的应用程序中查看此消息队列。我不确定你的解决方案应该有多先进,这可能有点超出范围!