向net core 3.0進擊——April.WebApi從2.2爬到3.0

来源:https://www.cnblogs.com/AprilBlank/archive/2019/10/09/11642841.html
-Advertisement-
Play Games

[toc] 前言 在之前對Swagger的變化做了調整後,就開始想著要不把之前的工程升級得了,這樣就還是個demo工程,來做各種測試(當然還是因為懶),這就有了今天這個比較折騰的一步。 升級之路 首先,April.WebApi工程右鍵 屬性,將之前的net core 2.2升級到3.0,然後對每個類 ...


目錄

前言

在之前對Swagger的變化做了調整後,就開始想著要不把之前的工程升級得了,這樣就還是個demo工程,來做各種測試(當然還是因為懶),這就有了今天這個比較折騰的一步。

升級之路

首先,April.WebApi工程右鍵->屬性,將之前的net core 2.2升級到3.0,然後對每個類庫項目右鍵->屬性,將net standard 2.0升級到2.1(這個應該是沒啥)。

升級之後,我們重新生成一下,咦,沒報錯美滋滋。

因為之前有過創建3.0的工程例子,所以對於Startup這塊兒還是要調整下的。

問題1

問題
問題
問題

因為net core3.0之後,對於Api可能是調整了(因為沒創建過Mvc工程),所以這個地方不再模糊的使用Mvc了。

  • 修改後

因為部分方法被棄用,因為3.0是一個嶄新的開始。

修改
修改
修改

好了,修改完啟動文件,我們來愉快的運行吧。

問題2

問題
開頭都這麼難麽,我們來看下這個錯誤,好了是跨域的問題,現在不讓AllowAll了是吧,並不是,是因為我們又要允許所有訪問,還能帶上Cookie,現在不讓這樣搞了。

  • 修改後
    修改

這個問題修改完後,我們再來運行下程式。

問題3

問題

這個是什麼問題呢,Session也不讓這樣玩了,也不是,主要問題呢是現在不需要WebHost了,Session的實現不明確了應該是,所以我們來該升級的升級,該調整的調整,其他工程引入的同樣需要更新下

  • 修改
    修改

這個地方因為我在看到錯誤後直接來這升級了,沒有截到圖,升級的庫名Microsoft.VisualStudio.Web.CodeGeneration.Design

修改Program內容如下:

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
  • 補充

在下麵的執行時,我發現使用Session會有問題,具體什麼問題呢,因為3.0多了一個註冊項,所以session的代碼調整如下,這裡註意下UseSession的位置要在Redirection之後。

        public void ConfigureServices(IServiceCollection services)
        {
            …
            #region Session
            services.AddDistributedMemoryCache();
            services.AddSession(options =>
            {
                options.Cookie.Name = "April.Session";
                options.IdleTimeout = TimeSpan.FromSeconds(2000);//設置session的過期時間
                options.Cookie.HttpOnly = true;//設置在瀏覽器不能通過js獲得該cookie的值,實際場景根據自身需要
                options.Cookie.IsEssential = true;
            });
            #endregion
            …
        }
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            …
            app.UseHttpsRedirection();

            app.UseSession();

            app.UseRouting();
            …
        }

修改完成後,我們再來運行下程式。

問題4

問題

  • 修改

這個我不需要翻譯軟體都能看到,這什麼什麼不讓返回了,emm。
這個問題我感覺是3.0可能是還沒開始擴展,畢竟剛出想讓人還是老老實實用內置的DI吧,這裡我的處理方法,只能是老老實實改回void,這個代碼就不用再展示了,不算是最好的解決方法。

讓我們忘記剛纔的難受,繼續運行程式吧。

問題5

問題

這個烏壓壓一大片我還以為瀏覽器崩了呢,仔細一看,好吧,swagger的事,這裡就不多說了。

在我以為能看到友好的Swagger的時候,現實給了我一巴掌。

問題6

問題

這個問題,依然是想用擴展的DI導致的,AspectCore這塊兒的東西暫時先屏蔽了,後續找到解決方法之後再處理吧。

  • 修改
    修改

經過以上一堆折騰後,我們終於迎來了Swagger歡迎的樣子,不容易。

Swagger

測試

為什麼還要帶上這個呢,我也搞不懂,習慣了測試一下功能吧,但是這裡就不一一截圖了,太麻煩(當然測試也只是簡單的執行了下之前的測試方法)。

  • log4功能正常
  • swagger功能正常
  • cache功能正常
  • session功能正常
  • cookie功能正常
  • sqlsugar功能正常
  • aop日誌功能正常
  • redis功能正常
  • 攔截器與中間層功能正常

如果有我沒試到的問題,可以給我留言,因為一個人的力量終究還是有那麼點兒局限的。

小結

在覆蓋原代碼的時候我想了一會兒,我擔心萬一有人在用呢,這樣覆蓋後會不會對人有影響,但是轉念一想,唉,這東西怕是都沒人用吧,自己鼓搗的東西,還是折騰點兒好,折騰使人進步,折騰活躍大腦,折騰…,編不下去了,以後再鼓搗新東西就是直接net core3.0上搞起了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 類型和變數 [C#類型和變數(原文參考官方教程)]https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/types-and-variables C#有兩種類型: 1. 值類型 1. 簡單類型 2. 枚舉類型 格式為 enum E ...
  • 委托 1. C# 中的委托類似於 C 或 C++ 中指向函數的指針。委托表示引用某個方法的引用類型變數,運行時可以更改引用對象。 2. 特別地,委托可以用於處理事件或回調函數。並且,所有的委托類都是從 System.Delegate 類繼承而來。 聲明委托的語法規則:(被委托所引用的方法需有相同的參 ...
  • C#程式計算N階行列式的值及N元一次方程組 用了挺長時間自行完成了C#程式計算N階行列式的值及N元一次方程組。由於自己沒有在網上查閱其他資料,所以只能硬著頭皮用最朴素的思想和基礎的演算法進行編程。在給出代碼之前,我先簡單發表一些自己的粗鄙之見。。。 1.數學思想:有了線性代數中高斯提供的公式,我們很容 ...
  • 點這裡進入ABP進階教程目錄 添加實體 打開領域層(即JD.CRS.Core)的Entitys目錄 //用以存放實體對象添加一個類StatusCode.cs //狀態信息 1 using System; 2 using System.Collections.Generic; 3 using Syst ...
  • 場景 WInforn中設置ZedGraph的焦點顯示坐標格式化以及顯示三個坐標數的解決辦法: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102466190 Winform中實現ZedGraph的多條Y軸(附源碼下載): htt ...
  • 通過上一篇文章(abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI之貨物管理二 (二十))中,我們已經實現貨物信息管理功能所需要的服務類與控制器類,頁面呈現。在這一篇文章中我們來實現貨物信息管理所需要的前端功能,主要是通過javascript來實現。 ...
  • 場景 Winforn中設置ZedGraph曲線圖的屬性、坐標軸屬性、刻度屬性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573 Winform中實現ZedGraph的多條Y軸(附源碼下載): https://bl ...
  • 場景 Winform中設置ZedGraph的曲線為散點圖: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102465399 在上面設置單條曲線為散點圖後的思路,繼續擴展設置曲線為折線、點折圖、散點圖。 效果 註: 博客主頁: h ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...