.net framework MVC 下 Hangfire使用,时区,权限
安装
NuGet 上有几个可用的Hangfire 的软件包。如果在ASP.NET应用程序中安装HangFire,并使用Sql Server作为存储器,那么请在Package Manager Console窗口中键入以下命令:
PM> Install-Package Hangfire
配置
在安装package后,添加或者更新以下几行到Owin Startp类:

using Hangfire; // ... public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configuration.UseSqlServerStorage("<connection string or its name>"); app.UseHangfireDashboard();
app.UseHangfireServer();
}

需要配置授权
默认情况下,只有本地有权限访问Hangfire仪表板。如果需要授权远程访问,那么仪表板的授权必须进行相应的配置。
然后打开Hangfire仪表板来测试您的配置。编译项目并在浏览器中打开以下URL:
|
1
|
http://<your-site>/hangfire |
用法
添加工作
HangFire处理不同类型的后台任务,并且使用一个独立的上下文环境调用他们。
Fire-And-forget(发布/订阅)
这是一个主要的后台任务类型,持久化消息队列会去处理这个任务。当你创建了一个发布/订阅任务,该任务会被保存到默认队列里面(默认队列是"Default",但是支持使用多队列)。多个专注的工作者(Worker)会监听这个队列,并且从中获取任务并且完成任务。
BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget"));
延迟
如果想要延迟某些任务的执行,可以是用以下任务。在给定延迟时间后,任务会被排入队列,并且和发布/订阅任务一样执行。
BackgroundJob.Schedule(() => Console.WriteLine("Delayed"), TimeSpan.FromDays(1));
循环
按照周期性(小时,天等)来调用方法,请使用RecurringJob类。在复杂的场景,您可以使用CRON表达式指定计划时间来处理任务。
RecurringJob.AddOrUpdate(() => Console.WriteLine("Daily Job"), Cron.Daily);
连续
连续性允许您通过将多个后台任务链接在一起来定义复杂的工作流。
var id = BackgroundJob.Enqueue(() => Console.WriteLine("Hello, "));
BackgroundJob.ContinueWith(id, () => Console.WriteLine("world!"));
释放
Hangfire将您的任务保存到持久化库汇总,并且以可靠的方式处理它们。这意味着,你可以中断Hangfire Worder的线程,重新加载应用程序域,或者终止程序,即使这样您的任务仍会被处理。只有在你代码的最后一行执行完成,Hangfire才会标记这个任务完成。并且知道任务可能在最后一行代码执行之前失败。它包含多种 自动-重试机制,它可以自动处理在存储或代码执行过程中发生的错误。
这对于通用托管环境(如IIS Server)非常重要。它们可以包含不同的优化,超时和错误处理代码(可能导致进程终止)来防止不好的事情发生。如果您没有使用可靠的处理和自动机制,您的工作可能会丢失。您的最终用户可能无限期等待某些任务,如电子邮件,报告,通知等。
但是当您的存储空间破损时,Hangfire无法做任何事情。请为您的存储使用不同的故障切换策略,以保证在发生灾难时处理每个作业。
以上文章来源:https://www.cnblogs.com/tangxing/p/6669051.html
原文地址:http://docs.hangfire.io/en/latest/quick-start.html
拓展内容
时区配置问题:
RecurringJob.AddOrUpdate(() => WriteLog("xcxxx"), Cron.Daily(,), TimeZoneInfo.Local); //注意最小单位是分钟,
//TimeZoneInfo.Local 使用服务器本地时间
权限配置问题:
OwinStartup 下 Configuration文件
GlobalConfiguration.Configuration.UseSqlServerStorage("HangfireDBConnection");
app.UseHangfireServer();
//app.UseHangfireDashboard(); //无权限控制
var options = new DashboardOptions
{
Authorization = new[] { new HangfireAuthorizationFilter() }
};
app.UseHangfireDashboard("/hangfire", options); //采用权限控制
public class HangfireAuthorizationFilter : IDashboardAuthorizationFilter
{
//这里需要配置权限规则
public bool Authorize(DashboardContext context)
{
return new UserService().IsAdmin(); //True 可以访问,False拒绝访问,结合系统原有逻辑设置
}
}
.net framework MVC 下 Hangfire使用,时区,权限的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列
http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ( ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(22)-为用户设置角色
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- 用最基本的EF+MVC+JQ+AJAX+bootstrap实现权限管理的简单实例 之登陆和操作权限
先来一堆关于上篇文章的废话(不喜者点此隐藏) 今天把博客加了个小功能,就是点标题可以隐藏或展示相关内容,做法很傻,就是引用了bootstrap的两个css类和全部的js文件,其实这样的小功能完全应该自 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
随机推荐
- poj1179多边形——区间DP
题目:http://poj.org/problem?id=1179 区间DP,值得注意的是有负值,而且有乘法,因此可能会影响最大值: 注意memset中写-1仅仅是-1,-2才是一个很小的负数: 最后 ...
- POJ2182(排队问题)
Lost Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10695 Accepted: 6865 Descri ...
- 跑monkey前开启/关闭下拉栏
@echo off cls title 别忘了跑monkey啊 :menu cls color 0A echo. echo 1.禁用systemui并重启 echo. echo 2.启用systemu ...
- Java Security(JCE基本概念)
Java Security网络环境中的安全隐患计算机安全OSI参考结构模型五类安全服务八类安全机制网络环境中的安全隐患1. 存储问题: 移动存储设备存储数据没有加密存在的安全隐患 2. 通信问题: 用 ...
- PCB上的导线 怎么开窗 去掉绿油 把铜皮裸露
开窗是个专业术语,你可以简单的理解为"去掉绿油,把铜皮裸露". 导线开窗用途一: 例如这个板子中的蛇形天线,就是导线开窗后的效果. 导线开窗用途二: 把需要过大电流的导线开窗,就可 ...
- Uncommon Words from Two Sentences
https://leetcode.com/problems/uncommon-words-from-two-sentences We are given two sentences A and B. ...
- 【机器学习】文本分类——朴素贝叶斯Bayes
朴素贝叶斯主要用于文本分类.文本分类常见三大算法:KNN.朴素贝叶斯.支持向量机SVM. 一.贝叶斯定理 贝叶斯公式思想:利用已知值来估计未知概率.已知某条件概率,如何得到两个事件交换后的概率,也就是 ...
- WebView根据加载的内容来控制其高度
一.先设置WebView的高度为0,然后在其加载结束后的代理方法中根据contentSize设置其高度 //初始话一个UIWebView: self.webView = [[[UIWebView al ...
- 存储过程为参数NULL时的处理方法
准备一些数据: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Goods]( ) NULL, ) NULL, ...
- echarts3.0 实例容器不实时更新页面的问题
var instanceId = document.getElementById(option.echartId).getAttribute('_echarts3_instance_'); if (i ...
