大连营商建设局网站,不错的网站建设公司,关键词优化搜索排名,如何做网站seo诊断1.如何在ASP.NET Core中激活Session功能#xff1f;
首先要添加session包. 其次要在configservice方法里面添加session。然后又在configure方法里面调用
app.UseSession();
2.什么是中间件#xff1f;
中间件在这里是指注入到应用中处理请求和响应的组件。是通过多个委托…1.如何在ASP.NET Core中激活Session功能
首先要添加session包. 其次要在configservice方法里面添加session。然后又在configure方法里面调用
app.UseSession();
2.什么是中间件
中间件在这里是指注入到应用中处理请求和响应的组件。是通过多个委托来嵌套形成的一个俄罗斯套
娃
或者微软官方原话
中间件是一种装配到应用管道以处理请求和响应的软件。 每个组件
选择是否将请求传递到管道中的下一个组件。
可在管道中的下一个组件前后执行工作。
请求委托用于生成请求管道。 请求委托处理每个 HTTP 请求。
3.Applicationbuilder的Use和Run方法有什么区别
这两个方法都在startup 类的configure方法里面调用。都是用来向应用请求管道里面添加中间件的。
Use方法可以调用下一个中间件的添加而run不会。run是终结式的
4.如何使taghelper在元素这一层上失效?
使用叹号。
5.什么是ASP.NET Core
首先ASP.NET Core可以说是 ASP.NET的升级版本。它遵循了.NET的标准架构是一个基于.NET Core的
Web开发框架 可以运行于多个操作系统上。它更快更容易配置更加模块化可扩展性更强。
6.ASP.NET Core 中AOP的支持有哪些
aop就是面向切面的编程.netcore里通过Filter来支持
分别有AuthorizeFilter ResourceFilter ActionFilter ExceptionFilter ResultFilter
Filter也被称为拦截器
可以看下 ASP.NET Core 中的筛选器 - Asp.netCore3.1 Web应用 - 为之网
7.ASP.NET Core Filter的注册方式有哪些
方法注册只对方法生效
控制器注册对控制器中的所有方法生效
全局注册对整个项目生效
8.ASP.NET Core Filter如何支持依赖注入?
可以通过全局注册支持依赖注入
通过TypeFilter(typeof(Filter)) 标记在方法标记在控制器
通过ServiceType(typeof(Filter))标记在方法标记在控制器必须要注册Filter这类
TypeFilter和ServiceType的本质是实现了一个IFilterFactory接口
9.ASP.NET Core 如何和读取配置文件中的内容
可以有两种方式可以通过IConfiguration接口来读取
也可以使用IOptionsSnapshot来读取需要先根据配置文件结构一致的实体对象来绑定到对象中去
必须保证DBConnectionOption和配置文件的内容结构一致
10.ASP.NET Core有哪些好的功能
第一是依赖注入。
第二是日志系统架构。
第三是引入了一个跨平台的网络服务器kestrel。可以没有iis, apache和nginx就可以单独运行。
第四是可以使用命令行创建应用。
第五是使用appsettings来配置工程。
第六是使用startup来注册服务。
第七是更好的支持异步编程。
第八是支持web socket和signal IR。
第九是对于跨网站的请求的预防和保护机制。
11.ASP.NET Core跟ASP.NET比较有哪些更好的地方
第一是跨平台它可以运行在三大操作系统上面windows Linux和MAC。
第二是对架构本身安装没有依赖因为所有的依赖都跟程序本身在一起。
第三是ASP.NET Core处理请求的效率更高能够处理更多的请求。
第四是ASP.NET Core有更多的安装配置方法。
12.什么是meta packages
Meta packages是指包含所有ASP dot net code依赖的一个包。叫做Microsoft.AspNetCore
13.ASP.NET Core应用能够跟ASP.NET4.x架构一起工作吗
可以。ASP.NET Core应用可以跟标准的dot net 库一起工作。
14.什么是ASP.NET Core的startup 类
startup 类是ASP.NET Core应用的入口。所有的ASP.NET Core应用必须有这个类。这个类用来配置应
用。这个类的调用是在program main函数里面进行配置的。类的名字可以自己定义。
15.startup 类的configservice方法有什么作用?
用以配置应用的服务在这个方法里我们可以添加一些service进入依赖注入容器。
比如数据库连接池mvc,swagger,controllers,filter,jwt,请求头以及自己定义的接口。
服务是一个提供应用功能的可重用组件。 在 ConfigureServices 中注册服务并通过依赖关系注入 (DI) 或 ApplicationServices 在整个应用中使用服务。
最重要的参数为IServiceCollection services
16.startup 类的configure方法有什么作用
用以创建应用的请求处理管道这个方法来定义整个应用如何响应HTTP请求。它有几个比较重要的参数IApplicationBuilderHosting
environment, logfactory 在这里我们可以配置一些中间件用来处理路径验证和session等等。
17.ASP.NET Core管道里面的map拓展有什么作用
可以针对不同的路径添加不同的中间件。
18.ASP.NET Core里面的路径是如何处理的?
路径处理是用来为进入的请求寻找处理函数的机制。所有的路径在函数运行开始时进行注册。
主要有两种路径处理方式 常规路径处理和属性路径处理。常规路径处理就是用MapRoute的方式设定
调用路径属性路径处理是指在调用函数的上方设定一个路径属性。
19.ASP.NET Core工程里面有多少个工程文件
Program, Startup launchsettingappsettings
20.什么是ASP.NET Core里面的taghelper
Taghelper用来在服务器端使用Razor视图引擎创建html元素的。
21.说说.NET5中 _ViewImports文件的作用。
在.NET5中可以支持组件化编程定义的各种组件在项目中使用的时候需要在_ViewImports文件中
引入进来。以及默认的tagHelpers
using MuXue.WeTao.Mall.Domain.Modelusing MuXue.WeTao.Mall.Domain.Model.responseusing MuXue.WeTao.Mall.Domain.EntityaddTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpersaddTagHelper *, AuthoringTagHelpers22.什么是Razor页面?
是ASP.NET Core中支持ASP网页表格的一种开发模型。page 作为页面的起始标志。。
Stringbulider的使用最好制定合适的容量值否则优于默认值容量不足而频繁的进行内存分
23.说说.NET5中 __ViewStart文件的作用
在控制器在返回视图的时候开始替换视图引擎的时候从_ViewStart.cshtml 开始来初始化展示的视
图界面试图views的入口文件。
24.如何在Razor页面中实现数据模型绑定
使用bindproperty属性。
25.如何在Controller中注入service
在config services方法中配置/注册这个service。
在controller的构造函数中添加这个依赖注入。
26.描述一下依赖注入后的服务生命周期?
在ASP.NET Core中我们不需要关心如何释放这些服务, 因为系统会帮我们释放掉。有三种服务的生命
周期。
单实例服务 通过add singleton方法来添加。在注册时即创建服务, 在随后的请求中都使用这一个服
务。
短暂服务, 通过add transient方法来添加。是一种轻量级的服务用于无状态服务的操作。
作用域服务一个新的请求会创建一个服务实例。使用add scoped方法来添加。
27.说说ASP.NET Core内置容器的特点
ASP.NET Core内置容器IServiceCollection只支持构造函数注入支持三种声明周期单例、瞬时、
Scoped三种声明周期管理
28.ASP.NET Core中如何读取静态文件
可以通过中间件UseStaticFiles来配置读取静态文件
29.ASP.NET Core项目如何设置IP地址和端口号
可以使用Properties文件夹下的launchSettings配置文件来配置不同的启动方式的时候分别配置IP和端
口号。
30.ASP.NET Core项目中wwwroot文件夹内包含什么内容
包含了css、js、js库、字体文件
31.谈谈对ASP.NET Core kestrel的理解。
Kestrel 是一个跨平台的适用于 ASP.NET Core 的 Web 服务器。 Kestrel 是包含在 ASP.NET Core 项目模板中的 Web 服务器默认处于启用状态。
Kestrel 支持以下方案
HTTPS
HTTP/2在 macOS† 上除外
用于启用 WebSocket 的不透明升级
用于获得 Nginx 高性能的 Unix 套接字
macOS 的未来版本将支持 †HTTP/2。
.NET Core 支持的所有平台和版本均支持 Kestrel。
32.谈谈对Autofac的理解
Autofac是一个IOC容器支持三种类型的DI依赖注入构造函数注入属性注入基于lambda表达式创建实例配置文件配置映射关系支持AOP扩展定制;
在ASP.NET Core的使用步骤如下
1.Nuget引入Autofac程序集
2.在Program类中的CreateHostBuilder方法中通过.UseServiceProviderFactory(new
AutofacServiceProviderFactory())替换容器工厂把容器替换到框架中
3.在Startup中增加ConfigureContainer方法用来配置映射关系。
public void ConfigureContainer(ContainerBuilder builder){}使用了Autofac以后在IServiceCollection中注入的服务也能生效因为Autofac是先接受了所有的
来自于IServiceCollection的服务映射后再去读取ConfigureContainer方法中配置的映射;
4.就可以在控制器中配置构造函数注入了。
33.ASP.NET Core 如何支持Log4Net扩展
就是一个日志组件的集成使用大概分为以下步骤
1.nuget引入log4net程序集Microsoft.Extensions.Logging.Log4Net.AspNetCore程序集合
2.增加配置文件配置文件内容如下
?xml version1.0 encodingutf-8?log4net!-- Define some output appenders --appender namerollingAppender typelog4net.Appender.RollingFileAppenderfile value..\log\Customlog.txt /!--追加日志内容--appendToFile valuetrue /!--防止多线程时不能写Log,官方说线程非安全--lockingModel typelog4net.Appender.FileAppenderMinimalLock /!--可以为:Once|Size|Date|Composite--!--Composite为Size和Date的组合--rollingStyle valueComposite /!--当备份文件时,为文件名加的后缀--datePattern valueyyyyMMdd.TXT /!--日志最大个数,都是最新的--!--rollingStyle节点为Size时,只能有value个日志--!--rollingStyle节点为Composite时,每天有value个日志--maxSizeRollBackups value20 /!--可用的单位:KB|MB|GB--maximumFileSize value3MB /!--置为true,当前最新日志文件名永远为file节中的名字--staticLogFileName valuetrue /!--输出级别在INFO和ERROR之间的日志--filter typelog4net.Filter.LevelRangeFilterparam nameLevelMin valueALL /param nameLevelMax valueFATAL //filterlayout typelog4net.Layout.PatternLayoutconversionPattern value%date [%thread] %-5level %logger -
%message%newline//layout/appenderrootpriority valueALL/level valueALL/appender-ref refrollingAppender //root/log4net3.在Program里对Log4net配置。
public static IHostBuilder CreateHostBuilder(string[] args){ return Host.CreateDefaultBuilder(args) //创建默认主机的建造者.ConfigureLogging(loggbuild {loggbuild loggbuild.AddLog4Net(CfgFile/log4net.Config);}) ///配置logging(指定使用Log4net).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup(); //如何配置配置全交给Startup来完成 }).UseServiceProviderFactory(new AutofacServiceProviderFactory());}4.就可以支持注入了可以在控制器中使用了。
34.说说脚本启动ASP.NET Core Web项目
介绍两种方式
第一种定位到Web项目的编译地址下就是bin文件夹下的.NET5文件夹然后在当前文件夹下打开命
令提示窗口dotnet dll文件 —urlshttp://ip地址端口号 回车即可
第二种定位到Web项目的根目录下然后在当前文件夹下打开命令提示窗口dotnet run —urlsht
tp://ip地址端口号 回车即可
推按第二种第二种方式在启动的时候会自动编译项目然后启动dll文件
35.说说Core WebApi的Swagger
Swagger是一个Api说明文档支持Api测试现在CoreWebApi开发使用swagger还挺多的
在.NET5中已经内置了Core WebApi配置流程如下
1.Nuget引入程序集Swashbuckle.AspNetCore.SwaggerGen
2.配置服务
public void ConfigureServices(IServiceCollection services){ services.AddControllers();services.AddSwaggerGen(c {c.SwaggerDoc(v1, new OpenApiInfo { Title WebApplication1, Version v1 });});}3.Configure方法里配置使用中间件
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ app.UseSwagger();app.UseSwaggerUI(c c.SwaggerEndpoint(/swagger/v1/swagger.json, WebApplication1 v1)); }36.说说Core WebApi特性路由。
在Core WebApi中每一个Api必须指定特性路由即在Api或者控制器上标记特性
Route(“api/[Controller]/Api”)访问Api就按照这个格式访问
37.说说RESTful是什么。
restful其实就是一套编写api接口的设计风格和开发方式规定如何编写以及如何设置返回值、状态码等信息。
RESTFUL特点包括
1、每一个URI代表1种资源
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作GET用来获取资源POST用来新建资源也可以用于更新资源PUT用来更新资源DELETE用来删除资源
3、通过操作资源的表现形式来操作资源
4、客户端与服务端之间的交互在请求之间是无状态的从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
http://www.ruanyifeng.com/blog/2011/09/restful.html
38.说说脚本在请求Web CoreApi的时候为什么会发生跨域问题
跨域问题本质是浏览器的行为浏览器有一个同源策略同源策略协议、IP地址相同就认为是同
源否则就非同源同源策略限定脚本请求只能请求同源的服务器返回的内容才给正常的使用否则就
会报跨域问题其实我们在请求Core WebApi的时候浏览器直接访问Api没有问题如果是脚本请求
就会出现跨域问题
39.如何解决跨域问题
三种方式
1.后台模拟Http请求既然是浏览器的行为就避开浏览器先来一个同源的服务器去请求然后由服
务器模拟http请求去请求到Core WebApi的资源然后响应给前端
2.JSONP思路通过html部分标签发起请求比方说 等等发起请求是可以避开同源策略的使用这
些标签发起请求然后带有一个回调函数然后得到请求后把回调函数之心一次把数据解析后使
用
3.服务端允许跨域多种方式可以自己定义中间件支持跨域只要把响应的Response的头信息
Header中写入“Access-Control-Allow-Origin” 即可支持跨域如果需要让所有的Api都支持跨域就可
以写一个中间件从管道处理模型中去支持跨域如果要选择性的支持跨域可以使用ActionFilter来完
成也可以通过CorsASP.NET Core中提供的中间件可以支持配置不同的跨域规则来配置支持跨
域
40.说说你了解到的鉴权授权技术。
1.传统的授权技术通过Session、Cookie完成授权实现特点: 让无状态的http请求变的有状态让
第一次请求和第二次请求之间产生联系第一次请求进入服务器在服务器写入一组session然后返回
sessionId给客户端存在Cookie,第二次请求从cookie中取到SessionId,传递给服务器服务器鉴别
SessionId,如果是上一次来的SessionId,就认为之前来请求过就认为有权限
2.流行鉴权授权方式Token授权在Core WebApi中主要就是JWT和IdentityServer4;都是独立的授权
中心授权后颁发token然后客户端带着token去请求Api,Api方验证Token验证通过就有权限验证
不通过就没有权限
41.请问对gRPC有了解吗说说gRPC。
有了解说gRPC可以先说RPC,PRC所谓RPC(remote procedure call 远程过程调用)框架实际是提供了
一套机制使得应用程序之间可以进行通信而且也遵从server/client模型。使用的时候客户端调用
server端提供的接口就像是调用本地的函数一样。
所谓gRPC 是由谷歌开发的一个高性能、开源和通用的 RPC 框架面向移动和 HTTP/2 设计。目前提供
C、Java 和 Go 语言版本分别是grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C, Node.js, Python,
Ruby, Objective-C, PHP 和 C# 支持.
42.gRPC有几种模式
四种模式
1简单模式简单模式只是使用参数和返回值作为服务器与客户端传递数据的方式最简单。
2客户端流模式即从客户端往服务器端发送数据使用的是流即服务器端的参数为流类型然而在服
务器相应后返还数据给客户端使用的也是流的send方法。一般在服务器端的代码需要先recv再
send而客户端与此相反。但是在后面的双向模式中可以使用go的协程协作。
3服务器端流模式即服务器端返回结果的时候使用的是流模式即传入的数据是通过参数形式传入
的。但是在往客户端发送数据时使用send方法与客户端返回数据的方式大同小异。
4双向模式客户端如果不适用协程那么发送必须在接收之前。如果使用协程发送与接收并没有先
后顺序。为了保证协程的同步可以使用互斥量进行约束。
43.说说如何使用C#实现简单模式gRPC
分为客户端和服务端
服务端
1.通过vs新建一个gRPC服务会内置一proto文件内容如下可以理解成是一个模板通过这个模板
可以生成对应的类文件。
syntax proto3; //规范---标准---工具生成C#option csharp_namespace Zhaoxi.gRPCDemo.DefaultServer;package greet;// The greeting service definition.service Greeter {// Sends a greetingrpc SayHello (HelloRequest) returns (HelloReply);}// The request message containing the users name.message HelloRequest {string name 1;}2.需要让这个文件生效就必须要在项目文件中配置使用这个文件GrpcServices“Server”,这是服务端
的配置
3.编译就可以通过这个模板生成一些类包含这些类的方法
客户端
1.Vs新建一个控制台作为客户端
2.把服务端的那个proto文件连同文件一起Copy到客户端来。
3.配置客户端的项目文件,如下。请注意 GrpcServices“Client”
4.编译后编写调用gRPC的方法如下
44.说说gRPC的拦截器有哪些
分为客户端拦截器和服务端连接器是AOP的编程思想的体现。
分别有 BlockingUnaryCall拦截阻塞调用 AsyncUnaryCall: 拦截异步调用 AsyncServerStreamingCall 拦截异步服务端流调用 AsyncClientStreamingCall 拦截异步客户端流调用 AsyncDuplexStreamingCall 拦截异步双向流调用 // The response message containing the greetings.message HelloReply {string message 1;}ItemGroupProtobuf IncludeProtos\CustomMath.proto GrpcServicesServer /Protobuf IncludeProtos\greet.proto GrpcServicesServer //ItemGroupItemGroupProtobuf IncludeProtos\greet.proto GrpcServicesClient /Protobuf IncludeProtos\CustomMath.proto GrpcServicesClient //ItemGroupprivate static async Task TestHello(){using (var channel GrpcChannel.ForAddress(https://localhost:5001)){var client new Greeter.GreeterClient(channel);var reply await client.SayHelloAsync(new HelloRequest { Name 找一找教程网 });Console.WriteLine(Greeter 服务返回数据: reply.Message); }}UnaryServerHandler 用于拦截和传入普通调用服务器端处理程序 ClientStreamingServerHandler 用户拦截客户端流调用的服务端处理程序 ServerStreamingServerHandler 用于拦截服务端流调用的服务器端处理程序 DuplexStreamingServerHandler 用于拦截双向流调用的服务器端处理程序 45.gPRC作为一种被调用的服务有什么保护安全的措施吗
有的可以使用JWT无论是对称可逆加密还是非对称可逆加密都是可以支持的
46.请问对EFCore有了解吗
有了解。
EF Core 是一个ORM对象关系映射框架 。
EF Core支持SQL Server/SQL Azure、SQLite、Azure Cosmos DB、MySQL、PostgreSQL
47.说说EFCore查询的性能调优小技巧。
(1).使用DbContext池
(2).优先使用异步方法
(3).批处理语句
(4).关闭状态追踪,AsNoTracking()
(5).关闭状态同步,context.ChangeTracker.AutoDetectChangesEnabled false
48.EFCore 如果通过数据生成实体和DbContext?
步骤如下
1.Nuget引入 如下程序集
2.在Vs中打开工具–nuget包管理器–程序包管理器控制台命令执行
Scaffold-DbContext Data SourceDESKTOP-63QE7M1;Initial CatalogZhaoxiEduDataBase;User
IDsa;Passwordsa123 Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entity -Force -Context ZhaoxiDbContext -ContextDir /注命令参数应用如下
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
命令参数
-OutputDir *** 实体文件所存放的文件目录
-ContextDir *** DbContext文件存放的目录
-Context *** DbContext文件名
-Schemas *** 需要生成实体数据的数据表所在的模式
-Tables *** 需要生成实体数据的数据表的集合
-DataAnnotations
-UseDatabaseNames 直接使用数据库中的表名和列名某些版本不支持
-Force 强制执行重写已经存在的实体文件
49.说说对SaveChanges的理解。
SaveChanges是以Context为维度的一次提交对于数据库操作的一切动作只要是在同一个Context实
例所有的操作在调用SaveChanges方法后统一体现到数据库中去
50.说说对EFCore中EntityState的理解。
因为EFCore对于数据库的所有操作都是通过上下文DbContext来完成的且是通过SaveChanges方法统
一落实到数据库中去的EntityState是EFCore 在对数据库操作增删改的时候记录当前被操作的数据对
象和Context的关系针对与不同的操作对应的一个状态信息一共五种状态一共五种
Detached 0, 当前对象和context没有任何关系没有被上下文跟踪
Unchanged1 当前对象被context跟踪数据没有做任何修改
Deleted2, 当前对象被context跟踪且标记是数据删除调用SaveChanges后将会从数据中删
除
Modified3 当前对象被context跟踪且有属性数据被修改过调用SaveChanges后将会从数据中
修改
Added4 当前对象被context跟踪且数据并没有存在数据库中调用SaveChanges后将会新增
到数据库中去
51.说说什么是EF中导航属性和引用属性。
EF Core导航属性分为三种 集合导航属性主表中对子表相关数据的引用 引用导航属性子表中对主表数据的引用 反转导航属性一个导航属性对应的另一端的导航属性
转载于 https://blog.csdn.net/puzi0315/article/details/118653815