0

我在 localhost 上安装了一个 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
    }

    // ...

}

是否可以从该代码调用外部的东西?

4

1 回答 1

1

你试图做的事情是不可能的。相反,您要做的是使用可以从 umbraco 应用程序触发的某种侦听器创建单独的应用程序。

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

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

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

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

于 2015-08-18T06:57:16.090 回答