日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

升级ASP.Net Core项目

發布時間:2023/12/4 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 升级ASP.Net Core项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

升級完類庫項目,第二篇,我們來升級ASP.Net Core項目

修改global.json與project.json

這里可以參照,升級.Net Core RC2的那些事(一)

這里補充一點就是如果你覺得這樣修改復雜,你完全可以新建一個項目,把這兩個文件拷貝過來,再加上自己引用過的包,也是可以的,看你覺得那種方法更簡單點

增加Program入口類

Program.cs:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Program { ???? public static void Main( string [] args) ???? { ???????? var host =? new WebHostBuilder() ???????????? .UseKestrel() ???????????? .UseContentRoot(Directory.GetCurrentDirectory()) ???????????? .UseIISIntegration() ???????????? .UseStartup<Startup>() ???????????? .Build(); ???????? host.Run(); ???? } }

并移除Startup.cs中的

1 2 // Entry point for the application. public static void Main( string [] args) => WebApplication.Run<Startup>(args);

修改類名和命名空間名

將所有 Microsoft.AspNet.*?的命名空間修改為 Microsoft.AspNetCore.*

參照下表修改對應的類名

舊類新類
IWebApplicationBuilderIWebHostBuilder
WebApplicationBuilderWebHostBuilder
IWebApplicationIWebHost
WebApplicationWebHost
WebApplicationOptionsWebHostOptions
WebApplicationDefaultsWebHostDefaults
WebApplicationServiceWebHostService
WebApplicationConfigurationWebHostConfiguration

如果你有使用全局環境變量,也請對照下表修改

Old prefixNew prefix
ASPNET_WEBROOTASPNETCORE_WEBROOT
ASPNET_SERVERASPNETCORE_SERVER
ASPNET_APPASPNETCORE_APPLICATIONNAME
ASPNET_ENVIRONMENTASPNETCORE_ENVIRONMENT
ASPNET_DETAILEDERRORSASPNETCORE_DETAILEDERRORS

修改Logging

如果你有使用日志功能,需要修改下日志等級的配置,具體在?appsettings.json

例如:

1 2 3 4 5 6 7 8 "Logging" : { ?? "IncludeScopes" :? false , ?? "LogLevel" : { ???? "Default" :? "Debug" , ???? "System" :? "Information" , ???? "Microsoft" :? "Information" ?? } },

具體請對照下表:

Old LevelsNew Levels
CriticalCritical
ErrorError
WarningWarning
InformationInformation
VerboseDebug
DebugTrace

關于PostAsJsonAsync與ReadAsAsync

如果以前有使用 Microsoft.AspNet.WebApi.Client 的,當然現在也是可以直接引用這個包來實現Web API之間的對接的

但我在實戰中發現,也許是因為引用包之間的版本沖突,會有詭異的異常,于是我自己實現了一個Helper也分享給大家

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public static class HttpClientHelper { ???? public static async Task<T> ReadAsAsync<T>( this HttpContent content) ???? { ???????? return JsonConvert.DeserializeObject<T>(await content.ReadAsStringAsync()); ???? } ???? public static async Task<HttpResponseMessage> PostAsJsonAsync<T>( this HttpClient client,? string url, T model) ???? { ???????? SetHeader(client); ???????? return await client.PostAsync(url, SetContent(model)); ???? } ???? private static StringContent SetContent<T>(T model) ???? { ???????? return new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8,? "application/json" ); ???? } ???? private static void SetHeader(HttpClient client) ???? { ???????? client.DefaultRequestHeaders.Clear(); ???????? client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue( "application/json" )); ???????? client.DefaultRequestHeaders.AcceptCharset.Add( new StringWithQualityHeaderValue( "utf-8" )); ???? } ???? public static async Task<HttpResponseMessage> PutAsJsonAsync<T>( this HttpClient client,? string url, T model) ???? { ???????? SetHeader(client); ???????? return await client.PutAsync(url, SetContent(model)); ???? } }

關于文件上傳保存

以前有.SaveAsAsync,這樣便捷的擴展方法保存的,現在沒有了(或者說藏到了哪里目前找不到了),于是就需要手寫

相關的代碼片段:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (model.picdata !=? null ) ???????????? { ???????????????? var extName = ContentDispositionHeaderValue.Parse(model.picdata.ContentDisposition).FileName.Trim( '"' ); ???????????????? int i = extName.LastIndexOf( '.' ); ???????????????? extName = extName.Substring(i); ???????????????? string fileName = Guid.NewGuid() + extName; ???????????????? var filePath = _hostingEnvironment.WebRootPath +? @"\upload\" + fileName; ???????????????? //保存文件 ???????????????? using ( var fileStream =? new FileStream(filePath, FileMode.Create)) ???????????????? { ???????????????????? var inputStream = model.picdata.OpenReadStream(); ???????????????????? await inputStream.CopyToAsync(fileStream); ???????????????? } ???????????????? //await model.picdata.SaveAsAsync(filePath); ???????????? }

本人的項目中就這一處需要保存文件的,就不封裝了:),你喜歡也可以自己封裝下

關于System.Drawing

由于項目中需要使用圖片處理(生成二維碼),好多大神建議另外建項目調用,但我想做在一個項目中,故有此一段

首先,ASP.Net Core項目是不支持System.Drawing的,如果需要使用,則需要修改成純 net461 的項目,這里需要修改一下project.json

1、刪除 Microsoft.NETCore.App 配置節

1 2 3 4 "Microsoft.NETCore.App" : { ???? "version" :? "1.0.0-rc2-3002702" , ???? "type" :? "platform" },

2、修改 frameworks 配置節,只保留 net461 項

1 2 3 4 5 6 7 8 9 10 11 "frameworks" : { ???? "net461" : { ???????? "frameworkAssemblies" : { ???????????? "System.Drawing" :? "4.0.0.0" ???????? }, ???????? "dependencies" : { ???????????? "ThoughtWorks.QRCode" :? "1.1.0" , ???????????? "Microsoft.NETCore.Platforms" :? "1.0.1-rc2-24027" ???????? } ???? } },

這樣修改完成后就可以在項目中使用 System.Drawing 命名空間了

副作用:

這樣修改后,項目是不能在CoreCLR上跑的,Windows環境下不會存在問題,Linux下則需要配置Mono環境才可以

關于Session

現在光在 ConfigureServices 方法中加 services.AddSession(); 是不夠的,實際使用時會報錯

還需要在 Configure 方法中加 app.UseSession();

發布到IIS

通過VS發布

現在你可以像MVC5那樣通過 右鍵菜單的 發布 功能,用Web Deploy來發布到IIS,需要注意的是目前這個工具對中文的支持不是很好,所以不要使用中文的項目名喲

通過cli發布

你也可以通過以下命令獲得發布文件

1 dotnet publish -c release

然后把獲得的文件通過FTP等途徑上傳到服務器

PS:此命令需要在 project.json 的同級目錄下運行

IIS配置

IIS綁定的目錄應該是最多DLL的那一層,而不是以前RC1的wwwroot

應用程序池中設置 無托管代碼 等,這些基本和RC1一致

其他補充

如果你的項目存在Areas,默認是不會發布出去的,此時需修改project.json的publishOptions配置節,例如:

1 2 3 4 5 6 7 8 9 "publishOptions" : { ???? "include" : [ ???????? "wwwroot" , ???????? "Views" , ???????? "Areas/Admin/Views" , ???????? "appsettings.json" , ???????? "web.config" ???? ] },


相關文章:

  • ASP.NET Core 1.0 入門——了解一個空項目

  • ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

  • .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡介

  • 云服務器下ASP.NET Core 1.0環境搭建(包含mono與coreclr)

  • 使用VS Code開發ASP.NET Core 應用程序

  • dotnet run是如何啟動asp.net core站點的

  • ASP.NET Core提供模塊化Middleware組件

  • “dotnet restore"和"dotnet run"都做了些什么?

  • 探秘 dotnet run 如何運行 .NET Core 應用程序

  • .NET Portability Analyzer 已開源

  • ASP.NET Core的配置(1):讀取配置信息

  • ASP.NET Core的配置(2):配置模型詳解

  • .NET Core 1.0 RC2 歷險之旅

  • 使用VS Code開發 調試.NET Core 應用程序

  • 讓我們Core在一起:ASP.NET Core & .NET Core

  • .NET Core VS Code 環境配置

  • 官方博客明確了 .NET Core RC2/RTM 時間表

  • .NET Core全新的配置管理[共9篇]

  • 利用記事本創建一個ASP.NET Core RC2 MVC應用

  • 微軟.NET 正式劈腿成功,橫跨所有平臺

  • .NET Core 1.0 CentOS7 嘗試

  • 解讀發布:.NET Core RC2 and .NET Core SDK Preview 1

  • [.NET Core].NET Core R2安裝及示例教程


原文地址:http://blog.lishewen.com/post/to-upgrade-thenet-core-rc2-(2)-those-things-to-upgrade-the-core-program-at-aspnet


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

贊賞

人贊賞

總結

以上是生活随笔為你收集整理的升级ASP.Net Core项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。