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

本文关键字:控制台 应用程序 交互 Umbraco | 更新日期: 2023-09-27 18:08:30

我在本地主机上安装了一个Umbraco (v4.7)站点。

我需要做一个动作(让我们说日志控制台或文件)每次umbraco节点被发布。

所以我需要从Umbraco站点与外部应用程序(如控制台或Windows服务)进行交互…

我不需要使用控制台应用程序操作umbraco站点,而是使用控制台(或windows服务)应用程序操作响应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内部引发事件,你可以创建自定义代码来触发这些事件(就像你的例子一样)。如果你正在做一些非常简单的事情(如将发布的节点记录到日志文件中),我建议你直接在特定事件的umbraco web进程中进行,而不是使事情过于复杂。

然而,如果你真的需要做一些更高级的事情,不能从你的umbraco进程中完成,我建议编码一个应用程序,监听事件,然后连接到该应用程序/触发事件通过点击应用程序内的webservice(或类似的东西),使用umbraco事件处理程序。

你也许可以做一些进程间调用来实现你最初的要求,但我想说这比它的价值更麻烦。web服务/http侦听器解决方案还允许您将应用程序从运行umbraco实例的web服务器中分离出来,以防您需要在两台不同的机器上运行它。

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