4 .NET Core笔试题
1.说说.NET7中 _ViewImports文件的作用?
2.什么是Razor页面?
3.说说.NET5中 __ViewStart文件的作用?
4.如何在Razor页面中实现数据模型绑定?
5.如何在Controller中注入service?
6.描述一下依赖注入后的服务生命周期?
7.说说ASP.NET Core内置容器的特点;
8.ASP.NET Core中如何读取静态文件?
9.ASP.NET Core项目如何设置IP地址和端口号?
10.ASP.NET Core项目中,wwwroot文件夹内包含什么内容?
11.如何理解C#10 中全局的using
12.NET6 中中间件的底层实现和.NET5中间件的区别。
13.谈对ASP.NET Core kestrel的理解
14.谈谈对Autofac的理解
15.ASP.NET Core 如何支持Log4Net扩展?
1.说说.NET7中 _ViewImports文件的作用?
在.NET7中可以支持组件化编程,定义的各种组件,在项目中使用的时候,需要在_ViewImports文件中引入进来。2.什么是Razor页面?
是ASP.NET Core中支持ASP网页表格的一种开发模型。@page 作为页面的起始标志。。 Stringbulider的使用, 好制定合适的容量值,否则优于默认值容量不足而频繁的进行内存分3.说说.NET5中 __ViewStart文件的作用?
在控制器在返回视图的时候,开始替换视图引擎的时候,从_ViewStart.cshtml 开始,来初始化展示的视图界面;4.如何在Razor页面中实现数据模型绑定?
使用bindproperty属性。5.如何在Controller中注入service?
在Config services方法中配置这个service。 在controller的构造函数中,添加这个依赖注入。6.描述一下依赖注入后的服务生命周期?
在ASP.NET Core中,我们不需要关心如何释放这些服务, 因为系统会帮我们释放掉。有三种服务的生命周期。7.ASP.NET Core跟ASP.NET比较有哪些更好的地方?
第一是跨平台,它可以运行在三大操作系统上面,windows, Linux和MAC。第二是对架构本身安装没有依赖,因为所有的依赖都跟程序本身在一起。
第三是ASP.NET Core处理请求的效率更高,能够处理更多的请求。
第四是ASP.NET Core有更多的安装配置方法。
8.说说ASP.NET Core内置容器的特点?
ASP.NET Core内置容器IServiceCollection,只支持构造函数注入;支持三种声明周期:单例、瞬时、 Scoped三种声明周期管理;9. ASP.NET Core中如何读取静态文件?
可以通过中间件UseStaticFiles来配置读取静态文件;//示例:要访问D盘的MyStaticFiles文件夹下的images文件夹下的banner1.svg问件该如何呢?
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider("D:/MyStaticFiles"),
RequestPath = "/StaticFiles"
});
}
//html文件
<img src="~/StaticFiles/images/banner1.svg" alt="pic"/>
10.ASP.NET Core项目如何设置IP地址和端口号?
可以使用Properties文件夹下的launchSettings配置文件来配置不同的启动方式的时候,分别配置IP和端口号。//launchSettings.json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:8088/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Hx.USORST.CustomerStock.WebApi": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:8088"
}
}
}
11.ASP.NET Core项目中,wwwroot文件夹内包含什么内容?
包含了css、js、js库、字体文件12.如何理解C#10 中全局的using?
using 指令简化了您使用命名空间的方式。C# 10 包括一个新的全局 using 指令和隐式 usings,以减少您需要在每个文件顶部指定的 usings 数量。全局 using 指令:如果关键字 global 出现在 using 指令之前,则 using 适用于整个项目。
隐式 usings:隐式 usings 功能会自动为您正在构建的项目类型添加通用的全局 using 指令。要启用隐式 usings,请在 .csproj 文件中设置 ImplicitUsings 属性
13.NET6 中中间件的底层实现和.NET5中间件的区别?
从底层实现没有太大的区别,都是委托的多层嵌套,实现中间件的组装,在.NET6中提供了更多的重载可以来调用;都是基于底层还是转换成委托的多层嵌套式。14.谈谈对ASP.NET Core kestrel的理解?
A、初识Kestrel首先,Kestrel是一个跨平台的Web服务器,支持运行在Windows、macOS、Linux等操作系统中。Kestrel支持一下使用场景:
B、Kestrel主要有两种使用模式:
-
Kestrel直接作为Web服务器,直接接收并处理各类Http请求:
-
与各类反向代理服务器(例如Nginx、Apache、IIS)配合使用,反向代理服务器接收Http请求,将这些请求转发到Kestrel Web服务器
C、使用反向代理服务器的好处有哪些呢?
//Kestrel配置项
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>();
//修改服务器侦听的IP地址、主机地址以及使用的端口号
webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname: 5002");
webBuilder.ConfigureKestrel((hostingContext, options) => {
//是否每个HTTP响应都要有Header
//默认为true
options.AddServerHeader = false;
//设置监听的地址和端口
options.Listen(IPAddress.Loopback, 6000);
options.Listen(IPAddress.Loopback, 6001);
//设置启用HTTPS并设置SSL证书
options.Listen(IPAddress.Loopback, 6002, listenOptions => {
listenOptions.UseHttps("ssl证书文件.pfx", "ssl证书文件密码");
});
});
})
.ConfigureKestrel(options =>
{
//设置监听配置
options.Listen(IPAddress.Any, 5002,listenOptions =>
{
//设置HTTP协议,启用HTTP2
listenOptions.Protocols = HttpProtocols.Http2;
});
});
}
15.谈谈对Autofac的理解?
Autofac是一个IOC容器,支持三种类型的DI依赖注入,配置文件配置映射关系,支持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.就可以在控制器中配置构造函数注入了