環(huán)境:ASP.NET Core 3.1
工具:VS2019
官方文檔的起始頁地址:教程:使用 ASP.NET Core 創(chuàng)建 Razor Pages Wb 應用 | Microsoft Learn
添加模型
添加基架生成CRUD類時,提示報錯
To scaffold controllers and views using models please install Entity Framework core packages and try again: Microsoft.EntityFrameworkCore.Design
解決方法:安裝EntityFrameworkCore(我選擇的5.0.0版本,但發(fā)現(xiàn)有問題)
接著繼續(xù)添加,提示報錯
Could not load file or assembly 'Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 系統(tǒng)找不到指定的文件。
解決方法:安裝Microsoft.Bcl.AsyncInterfaces的1.0.0版本(后續(xù)仍然需要修改)
繼續(xù)添加,提示報錯
The database provider attempted to register an implementation of the 'IRelationalTypeMappingSource' service. This is not a service defined by Entity Framework and as such must be registered as a provider-specific service using the 'TryAddProviderSpecificServices' method.
出錯的原因是EntityFrameworkCore的版本與它的依賴庫不一致
解決方法:修改Microsoft.Bcl.AsyncInterfaces的版本為1.1.1,EntityFrameworkCore版本為3.1.30,改為3.1.30是因為它的依賴包Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore.Tools都是這個版本。
初始遷移
Add-Migration和Update-Database命令是EF中Code First(代碼優(yōu)先)模式的關鍵命令,由于Code First模式用的很少,所以不用深究。項目中一般會使用DataBase First(數(shù)據(jù)庫優(yōu)先),即根據(jù)數(shù)據(jù)庫的表結構生成實體類,因為這種方式更加穩(wěn)妥。
IDE
今天為了方便調試,修改了項目-屬性-調試中應用URL和啟動瀏覽器的路徑,發(fā)現(xiàn)沒起到想要的效果,將它們的值改回去后,發(fā)現(xiàn)訪問電影列表頁面時提示“HTTP Error 500.35 - ASP.NET Core does not support multiple apps in the same app pool”,按照網(wǎng)上的說法退出VS后將.vs文件夾刪除,然后重新進入恢復正常。
VS加載項目時提示“項目文件不完整。缺少預期導入”
網(wǎng)上搜索了這個問題,很多回答是需要在項目文件的目錄中添加global.json文件指定sdk的版本,我也試著把它放了進去,但沒有效果,最后發(fā)現(xiàn)是打開項目的VS版本不對,創(chuàng)建項目用的是VS2019,打開它的卻是VS2017,所以不能用VS2017打開它,看來以后啟動程序要仔細一點。
實時應用 - WebSockets
配置中間件
添加WebSockets中間件需要在Configure方法中添加app.UseWebSockets(),它不能放到app.UseEndpoints方法的后面,否則在接受到WebSocket請求時,context.WebSockets.IsWebSocketRequest是否為false。
發(fā)布
Windows的IIS服務器
1、在IDE上右鍵項目,選擇發(fā)布后,配置發(fā)布選項,目標框架為netcoreapp3.1,目標運行時win-64
2、將發(fā)布文件夾復制到IIS的發(fā)布文件夾內,打開IIS,新建一個項目后,起個名字,應用程序池的.NET CLR版本為:無托管代碼,啟動網(wǎng)頁后發(fā)現(xiàn)報錯:處理程序“aspNetCore”在其模塊列表中有一個錯誤模塊“AspNetCoreModuleV2”
3、這是因為電腦中未安裝對應ASP.NET Core版本的模塊,ASP.NET Core 3.1就下載3.1版本的Windows Hosting Bundle,下載地址:下載 .NET Core 3.1 (Linux、macOS 和 Windows) ,如下圖中紅圈所示。
?4、下載安裝完成后,會發(fā)現(xiàn)在IIS中的模塊出現(xiàn)了AspNetCoreModuleV2
5、繼續(xù)啟動網(wǎng)站,報錯:HTTP Error 500.32 - ANCM Failed to Load dll ,點擊下面的幫助鏈接https://go.microsoft.com/fwlink/?LinkID=2028526?,搜索關鍵字500.32后發(fā)現(xiàn)是應用程序池的32位和64位版本不兼容,在IIS的應用程序池中,高級設置 > 啟動32位應用程序 設置為false后,重啟程序就能正常訪問了。?文章來源:http://www.zghlxwxcb.cn/news/detail-449864.html
(待續(xù)未完)文章來源地址http://www.zghlxwxcb.cn/news/detail-449864.html
到了這里,關于ASP.NET Core Razor官方文檔踩坑的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!