ASP.NET Core Razor官方文档踩坑

环境:ASP.NET Core 3.1

工具:VS2019

官方文档的起始页地址:教程:使用 ASP.NET Core 创建 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版本,但发现有问题)

接着继续添加,提示报错

Could not load file or assembly 'Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 系统找不到指定的文件。

解决方法:安装Microsoft.Bcl.AsyncInterfaces的1.0.0版本(后续仍然需要修改)

继续添加,提示报错

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(代码优先)模式的关键命令,由于Code First模式用的很少,所以不用深究。项目中一般会使用DataBase First(数据库优先),即根据数据库的表结构生成实体类,因为这种方式更加稳妥。

IDE

今天为了方便调试,修改了项目-属性-调试中应用URL和启动浏览器的路径,发现没起到想要的效果,将它们的值改回去后,发现访问电影列表页面时提示“HTTP Error 500.35 - ASP.NET Core does not support multiple apps in the same app pool”,按照网上的说法退出VS后将.vs文件夹删除,然后重新进入恢复正常。

VS加载项目时提示“项目文件不完整。缺少预期导入”

网上搜索了这个问题,很多回答是需要在项目文件的目录中添加global.json文件指定sdk的版本,我也试着把它放了进去,但没有效果,最后发现是打开项目的VS版本不对,创建项目用的是VS2019,打开它的却是VS2017,所以不能用VS2017打开它,看来以后启动程序要仔细一点。

实时应用 - WebSockets

配置中间件

添加WebSockets中间件需要在Configure方法中添加app.UseWebSockets(),它不能放到app.UseEndpoints方法的后面,否则在接受到WebSocket请求时,context.WebSockets.IsWebSocketRequest是否为false。

发布

Windows的IIS服务器

1、在IDE上右键项目,选择发布后,配置发布选项,目标框架为netcoreapp3.1,目标运行时win-64

2、将发布文件夹复制到IIS的发布文件夹内,打开IIS,新建一个项目后,起个名字,应用程序池的.NET CLR版本为:无托管代码,启动网页后发现报错:处理程序aspNetCore”在其模块列表中有一个错误模块“AspNetCoreModuleV2

3、这是因为电脑中未安装对应ASP.NET Core版本的模块,ASP.NET Core 3.1就下载3.1版本的Windows Hosting Bundle,下载地址:下载 .NET Core 3.1 (Linux、macOS 和 Windows) ,如下图中红圈所示。

ASP.NET Core Razor官方文档踩坑_第1张图片

 4、下载安装完成后,会发现在IIS中的模块出现了AspNetCoreModuleV2

ASP.NET Core Razor官方文档踩坑_第2张图片

5、继续启动网站,报错:HTTP Error 500.32 - ANCM Failed to Load dll ,点击下面的帮助链接https://go.microsoft.com/fwlink/?LinkID=2028526 ,搜索关键字500.32后发现是应用程序池的32位和64位版本不兼容,在IIS的应用程序池中,高级设置 > 启动32位应用程序 设置为false后,重启程序就能正常访问了。 

(待续未完)

你可能感兴趣的:(#,ASP.NET,Core,asp.net,microsoft,c#)