与 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 进程中完成的更高级的事情,我建议编写一个应用程序来侦听事件,然后通过点击一个连接到 app/triggering 事件使用 umbraco 事件处理程序在该应用程序(或类似的东西)中使用 webservice。
您也许可以执行一些进程间调用来实际实现您最初的要求,但我认为这比它值得的麻烦更多。 Web service/http 侦听器解决方案还允许您将应用程序与 Web 服务器分开 运行ning umbraco 实例,以防您需要 运行 在两台单独的机器上执行此操作。
另一种方法是在 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 进程中完成的更高级的事情,我建议编写一个应用程序来侦听事件,然后通过点击一个连接到 app/triggering 事件使用 umbraco 事件处理程序在该应用程序(或类似的东西)中使用 webservice。
您也许可以执行一些进程间调用来实际实现您最初的要求,但我认为这比它值得的麻烦更多。 Web service/http 侦听器解决方案还允许您将应用程序与 Web 服务器分开 运行ning umbraco 实例,以防您需要 运行 在两台单独的机器上执行此操作。
另一种方法是在 umbraco 之外的消息队列中对事件进行排队,然后从您自己的应用程序中查看此消息队列。不过,我不确定您的解决方案应该有多先进,这可能有点超出范围!