国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ASP.NET Core使用Hangfire定時發(fā)布文章

這篇具有很好參考價值的文章主要介紹了ASP.NET Core使用Hangfire定時發(fā)布文章。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ASP.NET Core使用Hangfire實現(xiàn)定時任務(wù)

前言

也是上了5天班,終于迎來了休息,抽空更新下博客,然后就是下周一公司會對我進(jìn)行考核,希望考核能通過吧?。?!

然后我想給博客添加一個定時發(fā)布文章的功能,其實這個功能對于我的博客是沒什么作用的,什么時候發(fā)都沒什么人看。但是咱還是要有這個功能。

實現(xiàn)思路

我為文章表添加了一個Status狀態(tài)屬性,然后如果在上傳文章的時候,添加了定時參數(shù),那么就會進(jìn)入定時任務(wù)的方法。首先無論是否選擇定時發(fā)布,文章都會保存到數(shù)據(jù)庫。Status狀態(tài)默認(rèn)為1,如果是定時發(fā)布文章的話,Status狀態(tài)為0,當(dāng)?shù)竭_(dá)定時時間后將會執(zhí)行定時任務(wù),修改Status屬性為發(fā)布也就是1。

實現(xiàn)步驟

第一步:安裝Hangfire包

dotnet add package Hangfire
dotnet add package Hangfire.MemoryStorage //根據(jù)需求導(dǎo)入

第二步:配置服務(wù)

在配置文件中配置Hangfire

// 添加Hangfire服務(wù)
builder.Services.AddHangfire(configuration => configuration.UseMemoryStorage());
// 添加定時任務(wù)
builder.Services.AddHangfireServer();
// 使用Hangfire中間件
app.UseHangfireDashboard();

注意我這里是直接使用的內(nèi)存UseMemoryStorage作為Hangfire的存儲方式,這個項目還提供了很多比如SQLServer,Redis等,那么對應(yīng)的Nuget包也不同,自行參考官方文檔,鏈接在本文底部。

第三步:調(diào)度后臺任務(wù)

首先是修改狀態(tài)的代碼

public void UpdateStatus(string id)
{
    var post = _myDbContext.posts.FirstOrDefault(p => p.Id == id);
    if (post != null)
    {
    post.Status = 1;
    _myDbContext.SaveChanges();
    }
}

Hangfire調(diào)用后臺任務(wù)的方法是BackgroundJob.Schedule(),里面需要2個參數(shù),分別是需要定時執(zhí)行的方法和延遲任務(wù)執(zhí)行的時間。

...上方邏輯代碼,無需展示
    if (publishTime.HasValue && publishTime.Value > DateTime.Now)
    {
        // 計算延遲時間
        var delay = publishTime.Value - DateTime.Now;
        post.Status = 0;//未發(fā)布
        // 使用Hangfire調(diào)度后臺任務(wù)
        BackgroundJob.Schedule( () => UpdateStatus(post.Id) ,delay);
    }
else
{
    post.Status = 1; //發(fā)布
}
// 存入數(shù)據(jù)庫
await _myDbContext.SaveChangesAsync();

實現(xiàn)效果

首先發(fā)送請求,可以看到啟動了定時任務(wù)

ASP.NET Core使用Hangfire定時發(fā)布文章

然后查詢數(shù)據(jù)庫,可以看到Status為0。

ASP.NET Core使用Hangfire定時發(fā)布文章

然后在08分的時候,Status變成了1,也就是發(fā)布

ASP.NET Core使用Hangfire定時發(fā)布文章

然后也是可以看到執(zhí)行了Update語句

ASP.NET Core使用Hangfire定時發(fā)布文章

管理后臺也是加了個狀態(tài)欄

ASP.NET Core使用Hangfire定時發(fā)布文章文章來源地址http://www.zghlxwxcb.cn/news/detail-711581.html

參考資料

  • HangfireIO/Hangfire:一種在.NET和.NET Core應(yīng)用程序中執(zhí)行后臺作業(yè)處理的簡單方法。無需 Windows 服務(wù)或單獨的進(jìn)程 (github.com) https://github.com/HangfireIO/Hangfire

到了這里,關(guān)于ASP.NET Core使用Hangfire定時發(fā)布文章的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ASP.NET Core + Jenkins實現(xiàn)自動化發(fā)布

    ASP.NET Core + Jenkins實現(xiàn)自動化發(fā)布

    ??作者:科技、互聯(lián)網(wǎng)行業(yè)優(yōu)質(zhì)創(chuàng)作者 ??專注領(lǐng)域:.Net技術(shù)、軟件架構(gòu)、人工智能、數(shù)字化轉(zhuǎn)型、DeveloperSharp、微服務(wù)、工業(yè)互聯(lián)網(wǎng)、智能制造 ??歡迎關(guān)注我(Net數(shù)字智慧化基地),里面有很多 高價值 技術(shù)文章, 是你刻苦努力也積累不到的經(jīng)驗 ,能助你快速成長。升職

    2024年02月22日
    瀏覽(21)
  • ASP.NET Core MVC+Quartz實現(xiàn)定時任務(wù)可視化管理頁面

    ASP.NET Core MVC+Quartz實現(xiàn)定時任務(wù)可視化管理頁面

    在前一篇文章,我們了解了如何通過.NET6+Quartz開發(fā)基于控制臺應(yīng)用程序的定時任務(wù),今天繼續(xù)在之前的基礎(chǔ)上,進(jìn)一步講解基于ASP.NET Core MVC+Quartz實現(xiàn)定時任務(wù)的可視化管理頁面,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正。 Quartz組件,關(guān)于Quartz組件的基本介紹,可參考前

    2024年02月01日
    瀏覽(28)
  • NET Core發(fā)布 HTTP Error 500.31 - Failed to load ASP.NET Core runtime

    NET Core發(fā)布 HTTP Error 500.31 - Failed to load ASP.NET Core runtime

    記錄一下踩過的坑: 首先,不論是500.31還是500.30 ,首先確保安裝了三個文件 1.NET Core RunTime 2.NET SDK 3.NET Hosting 其次,確保三個文件的版本一致,如下: 要裝就統(tǒng)一裝同一個大版本,不要東一個西一個,不然就報錯(親身體驗)。 發(fā)布完再看看應(yīng)用程序池設(shè)置: 基本上和我這

    2024年01月17日
    瀏覽(63)
  • 【C#/.NET】使用ASP.NET Core對象池

    Microsoft.Extensions.ObjectPool ? 減少初始化/資源分配,提高性能。這一條與線程池同理,有些對象的初始化或資源分配耗時長,復(fù)用這些對象減少初始化和資源分配。比如:我有一個執(zhí)行耗時約500毫秒,內(nèi)存空間 2KB的任務(wù)為此創(chuàng)建一個新線程異步執(zhí)行,而創(chuàng)建線程耗時1秒,內(nèi)存空

    2024年02月06日
    瀏覽(17)
  • ASP.NET CORE API 使用Orleans

    ASP.NET CORE API 使用Orleans

    快速使用Monimal API 快速集成Orleans 微軟官網(wǎng)地址如下: https://learn.microsoft.com/zh-cn/dotnet/orleans/quickstarts/build-your-first-orleans-app?source=recommendationstabs=visual-studio 當(dāng)然它的存儲grain存儲采用的是內(nèi)存級別存儲,我緩存了mssql 存儲。如果是內(nèi)存存儲使用如下代碼就Ok 我采用的是數(shù)據(jù)庫存

    2024年02月06日
    瀏覽(23)
  • ASP.NET Core MVC 使用 JWT 的示例

    創(chuàng)建一個 ASP.NET Core MVC 項目。 添加 NuGet 包: Microsoft.AspNetCore.Authentication.JwtBearer:用于支持 JWT 的身份驗證。 System.IdentityModel.Tokens.Jwt:用于生成和驗證 JWT。 在 Startup.cs 文件中做如下修改: 請注意,在上述代碼中,您需要將以下參數(shù)替換為實際的值: \\\"your_issuer\\\" :發(fā)行者的標(biāo)

    2024年02月13日
    瀏覽(25)
  • ASP.NET Core Web API入門之三:使用EF Core

    ASP.NET Core Web API入門之三:使用EF Core

    一般來講我們做項目都會用實體類跟數(shù)據(jù)庫實體進(jìn)行關(guān)系對應(yīng),這樣的好處方便我們維護(hù)、增刪改查,并且可以減少SQL的編寫,從而統(tǒng)一風(fēng)格,那么 Entity Framework Core 就是很不錯的ORM框架。 1、跨數(shù)據(jù)庫支持能力強(qiáng)大,只需修改配置就可以輕松實現(xiàn)數(shù)據(jù)庫切換。 2、提升了開發(fā)效

    2024年02月10日
    瀏覽(22)
  • 使用任務(wù)計劃開機(jī)啟動ASP.NET Core應(yīng)用程序

    使用任務(wù)計劃開機(jī)啟動ASP.NET Core應(yīng)用程序

    ASP.NET Core應(yīng)用程序現(xiàn)在是一個控制臺應(yīng)用程序,在Windows上直接雙擊啟動,但如果想讓開發(fā)完成的ASP.NET Core應(yīng)用程序開機(jī)啟動,可以將ASP.NET Core應(yīng)用程序修改成Windows服務(wù)運行,但這需要額外添加代碼,也可以使用IIS來托管ASP.NET Core應(yīng)用程序,但可能需要安裝一些支持IIS的組件

    2024年02月08日
    瀏覽(24)
  • ASP.NET Core 中使用 WebSocket 協(xié)議進(jìn)行實時通信

    介紹 在 ASP.NET Core 中使用 WebSocket 協(xié)議創(chuàng)建實時通信的完整示例涉及幾個步驟。在此示例中,我們將創(chuàng)建一個簡單的聊天應(yīng)用程序,用戶可以在其中實時發(fā)送和接收消息。此示例假設(shè)您對 ASP.NET Core 和 C# 有基本了解。 步驟1.創(chuàng)建一個新的ASP.NET Core項目 首先,使用 Visual Studio 或

    2024年01月25日
    瀏覽(28)
  • 【ASP.NET Core】使用SignalR推送服務(wù)器日志

    【ASP.NET Core】使用SignalR推送服務(wù)器日志

    一個多月前接手了一個產(chǎn)線機(jī)器人項目,上位機(jī)以讀寫寄存器的方式控制機(jī)器人,服務(wù)器就是用 ASP.NET Core 寫的 Web API。由于前一位開發(fā)者寫的代碼質(zhì)量問題,導(dǎo)致上位機(jī)需要16秒才能啟動。經(jīng)過我近一個月的改造,除了保留業(yè)務(wù)邏輯代碼,其他的基本重寫。如今上位機(jī)的啟動

    2024年02月03日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包