我在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
}
// ...
}
是否可以从该代码中调用外部内容?
答案 0 :(得分:1)
你真正想做的事情是不可能的。你要做的是用你可以从umbraco应用程序触发的某种监听器创建你的独立应用程序。
每当动作发生时,都会在umbraco内部引发事件,您可以创建触发这些事件的自定义代码(例如在您的示例中)。如果您正在做一些非常简单的事情(将已发布的节点记录到日志文件中),我建议您直接在umbraco Web进程中针对该特定事件执行此操作,而不是过度复杂化。
但是如果你真的需要做一些在你的umbraco过程中无法完成的更高级的事情,我建议编写一个应用程序来监听事件,然后通过点击该应用程序内的web服务来连接到该应用程序/触发事件(或类似的东西),使用umbraco事件处理程序。
您可以进行一些进程间调用以实际实现您最初要求的内容,但我说它比它的价值更麻烦。 Web服务/ http侦听器解决方案还允许您将应用程序与运行umbraco实例的Web服务器分开,以防您需要在两台不同的计算机上运行它。
另一种方法是将事件排在umbraco外部的消息队列中,然后从您自己的应用程序中查看此消息队列。我不确定你的解决方案应该有多先进,这可能有点超出范围!