【问题标题】:How to integrate hangfire into the DotnetNuke backend如何将hangfire 集成到DotnetNuke 后端
【发布时间】:2018-02-06 04:12:47
【问题描述】:

我有一个需要由后台进程处理的长进程方法。我正在考虑使用 HangFire。它是一个免费的开源框架,可让您轻松地在 .NET 应用程序中执行后台处理。问题是我是 DNN 的新手,我不知道如何开始。我正在谷歌搜索如何集成它,但我找不到参考。有人知道如何将 HangFire 集成到 DNN 中吗?

【问题讨论】:

  • 如果使用 hangfire 的模块在 DNN store 中没有出售,您将不得不构建自己的模块。
  • @VDWWD,您知道如何在 DNN 中配置和构建 HangFire 吗?我知道如何在任何 .NET 应用程序中构建 HangFire,但我还没有 DNN 经验。
  • 在一个模块中,您可以执行与其他 .net 应用程序相同的操作,包括使用 hangfire。但是 DNN 有一个内置调度程序,您也可以为其编写服务。
  • 我要做的后台进程不是调度器,它是由客户端的一个按钮触发的,然后后台进程应该启动。这样做的目的是异步分离持有长时间运行方法的进程,即使我导航到其他页面或退出页面,它仍在处理我的请求。
  • 那么模块是你最好的选择。您还可以创建一个与 DNN 无关的独立页面并将其放入门户中。然后用ajax调用那个页面并执行hangfire。但这是一个丑陋的解决方案。

标签: dotnetnuke hangfire


【解决方案1】:

您必须创建一个 .NET 项目并在项目中安装 Owin 和 Hangfire 包。
在那个项目中, 创建一个 Owin 启动类并将您的 Hangfire 初始化代码放入 Configuration 方法中,如下所示:

using Hangfire;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(DnnHangfireIntegration.Startup))]

namespace DnnHangfireIntegration
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            GlobalConfiguration.Configuration.UseSqlServerStorage("HangfireConnection");
            app.UseHangfireServer();
            app.UseHangfireDashboard("/desktopmodules/hangfire");
        }
    }
}

您必须将 hangfire 仪表板配置为使用“/desktopmodules/hangfire”网址,这样它就不会被 DNN 拦截。
编译您的项目并将您的项目 DLL、Hangfire DLL 和 Owin DLL 复制到您的 DNN bin 文件夹中。

最后,您必须更新 web.config 以告诉 Hangfire 如何找到您的启动类。您可以使用此 appsetting 来做到这一点:

<add key="owin:AutomaticAppStartup" value="true"/>

另外不要忘记添加连接字符串,您也可以重复使用现有的连接字符串。

如需更详细的演练,请查看我的博文:https://swimburger.net/blog/dotnet/how-to-add-hangfire-to-dnn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 2021-03-25
    • 1970-01-01
    • 2011-01-09
    • 2013-06-20
    • 1970-01-01
    相关资源
    最近更新 更多