1、ASP.NET Core 比 ASP.NET 的优势在哪?
-
跨平台,ASP.NET Core 可以在 Windows、Linux 和 Mac 系统运行; -
开源,ASP.NET Core 在 Github 上是开源的,意味着更安全以及更好的服务; -
部署灵活,ASP.NET Core 运行时可以作为应用的一部分进行部署,也可以集中安装在Web 服务器上。另外,也适配 Docker 容器; -
性能更强,ASP.NET Core 处理请求的性能更好,从而能处理更多的请求;
2、ASP.NET Core 的特性有哪些?
-
支持依赖注入,ASP.NET Core 内置的依赖项注入; -
内置日志框架,并且可以扩展; -
可以通过命令来创建、运行应用程序; -
对异步编程更好的支持; -
引入新的、快速跨平台的 Web 服务器 — Kestrel; -
支持 SignalR ; -
可基于环境进行配置 ,appSettings.json
欢迎补充。
3、ASP.NET Core Filter如何⽀持依赖注⼊?
- public void ConfigureServices(IServiceCollection services)
- {
- //全局注册异常过滤器
- services.AddControllersWithViews(option=> {
- option.Filters.Add<ExecptionFilter>();
- });
- }
复制代码
- [TypeFilter(typeof(ExecptionFilter))]
- public IActionFilter Index()
- {
- return View();
- }
复制代码
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddControllersWithViews();
- services.AddSingleton<ExecptionFilter>();
- }
- [ServiceFilter(typeof(ExecptionFilter))]
- public IActionFilter Index()
- {
- return View();
- }
复制代码
4、ASP.NET Core Filter 的注册方式有哪些?
方法注册:只对标记的方法有效
控制器注册:对控制器中的所有方法有效
全局注册:对整个项目生效
5、ASP.NET Core 的 Startup 类是什么?
Startup 类是 ASP.NET Core 应用程序的入口,ASP.NET Core 应用不可以缺少,这个类主要用来配置应用程序。类名不一定叫 "Startup" 该类在 Program Main方法里进行调用。
Startup 类有两个方法
ConfigService 方法可以添加 Service 到依赖注入容器
Cofnigure 方法定义整个应用如何响应 HTTP 请求。可配置中间件,一些常用的中间件要熟悉和了解并配置。
6、ApplicationBuilder 的 Use 和 Run 方法有什么区别?
这两个都是向请求管道添加中间件,Use 会进入下一个中间件,Run 不会。Run 是终结点。
7、什么是中间件?
中间件指的是注入到应用中处理请求和响应的的组件。而这个过程我们称之为请求管道。
8、ApplicationBuilder Map 有什么用?
可以针对不同的路径添加不同的中间件。
9、ASP.NET Core 工程文件有哪些?
launchSetting,appSettings,Program,Startup
10、ASP.NET Core 中服务的生命周期有哪些?
- services.AddSingleton<ITaskService, TaskService>();
复制代码
- services.AddScoped<ITaskService, TaskService>();
复制代码
- services.AddTransient<ITaskService, TaskService>();
复制代码
11、中间件的应用场景有哪些?列举一些常用的中间件。
-
开发环境的异常处理:UseDeveloperExceptionPage(); -
⽣产环境的异常处理:UseExceptionHandler(); -
HTTP 严格传输安全协议:UseHsts();添加 Strict-Transport-Security 标头 -
HTTPS 重定向:UseHttpsRedirection();将 HTTP 重定向到 HTTPS -
启用静态文件:UseStaticFiles(); -
启用 Cookie 策略:UseCookiePolicy(); -
路由请求:UseRouting(); -
身份验证:UseAuthentication(); 对用户进行身份验证,通过后才可心访问安全资源 -
授权:UseAuthorization(); 授权用户访问安全资源 -
会话中间件:UseSession(); -
终节点路由:UseEndpoints(); 就列这些,注意它们的执行顺序。
12、ASP.NET Core 项目如何设置 IP 地址和端口号?
打开 Properties 文件夹下的 launchSettings 文件进行配置。
13、什么是依赖注入?依赖注入的方式有哪些?什么是控制反转?依赖注入的原理?
ASP.NET Core 内置依赖注入,这方面的知识点也就成为一些面试官经常考查的点。通过这些考查反应面试者对依赖注入的理解。在公众号上我也写了一篇文章,希望有助于理解。
.Net Core上的依赖注入和控制反转
14、 ASP.NET Core 异常处理有哪些方案?
- namespace FirstWebApp.Controllers
- {
- public class YldController : Controller
- {
- public override void OnActionExecuted(ActionExecutedContext context)
- {
- if (context.Exception != null)
- {
- //处理异常,记录异常信息等
- }
- base.OnActionExecuted(context);
- }
- }
- //创建 HomeController ,继承 YldController
- public class HomeController : YldController
- {
- public IActionResult Index()
- {
- return View();
- }
- }
- }
复制代码
- public class ExceptionActionFilterAttribute : ActionFilterAttribute
- {
- public override void OnActionExecuted(ActionExecutedContext context)
- {
- if(context.Exception != null)
- {
- //处理异常,记录异常信息等
- }
- base.OnActionExecuted(context);
- }
- public override void OnResultExecuted(ResultExecutedContext context)
- {
- if (context.Exception != null)
- {
- //处理异常,记录异常信息等
- }
- base.OnResultExecuted(context);
- }
- }
复制代码
使用方式参考问题3
- public class YldExceptionFilter : IExceptionFilter
- {
- public void OnException(ExceptionContext context)
- {
- if(context.Exception != null)
- {
- //省略...
- }
- }
- }
复制代码
- public void Configure(IApplicationBuilder app,IHostEnvironment env)
- {
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
- else
- {
- app.UseExceptionHandler("/Home/Error");
- }
- app.UseRouting();
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapControllers();
- });
- }
复制代码
- public class ErrorMiddleware
- {
- private readonly RequestDelegate next;
- public ErrorMiddleware(RequestDelegate next)
- {
- this.next = next;
- }
- public async Task Invoke(HttpContext context)
- {
- try
- {
- await next(context);
- }
- catch (Exception ex)
- {
- //处理异常
- }
- }
- }
- public void Configure(IApplicationBuilder app,IHostEnvironment env)
- {
- //启用自定义中间件
- app.UseMiddleware(typeof(ErrorMiddleware));
- app.UseRouting();
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapControllers();
- });
- }
复制代码
15、 什么是ASP.NET Core ?
ASP.NET Core 不是 ASP.NET 的升级版本。ASP.NET Core 完全重写了与 .NET Core 框架一起使用的功能。它更快、可配置、模块化、可扩展和跨平台支持。它可以通过 .NET 标准框架与 .NET Core 和 .NET 框架一起使用。
16、 ASP.NET Core 可以与 .NET 4.x 框架一起使用?
可以的。
17、 什么是请求委托?
请求委托处理每个 HTTP 请求并用于构建请求管道。它可以使用 Run、Map 和 Use 扩展方法进行配置。请求委托可以是内联匿名方法(称为内联中间件)或可重用类。这些类或内联方法称为中间件。
18、ASP.NET Core 中的 Host是什么?
Host 封装了应用程序所有资源。启动时,ASP.NET Core 应用程序创建主机。主机封闭的资源包括:
-
HTTP 服务器的实现 -
依赖注入 -
配置 -
日志 -
中间件
19、介绍下缓存和响应缓存及内存缓存(MemoryCache)?
缓存通过减少对实际数据的调用次数,提高应用程序性能和扩展性。缓存制作数据副本并将其存储,而不是从原始源生成数据。
响应缓存最适合不经常更改的数据,响应缓存标头控制响应控制。ResponseCache 属性为这些缓存头设置额外的属性。
内存缓存是 ASP.NET Core 最简单的缓存方式,它将数据存储在 Web 服务器的内存中。内存缓存可以存储任何对象。 - public void ConfigureServices(IServiceCollection services)
- {
- services.AddMemoryCache(); //启用内存缓存
- }
复制代码
如果有多台服务器时,需要分布式缓存,分布式缓存可以避免缓存一致性问题。它将内存卸载到外部进程。
分布式缓存优点:
-
跨客户端请求到多个服务器的数据是一致的; -
服务重新启动和部署期间数据保持活动状态; -
数据不是使用本地内存;
20、什么是XSRF 或 CSFR?如何防止ASP.NET Core 中的跨站点请求伪造(XSRF/CSFR)攻击?
跨站点请求伪造 (也称为 XSRF 或 CSRF) 是对 web 托管应用程序的攻击,恶意 web 应用可能会影响客户端浏览器和信任该浏览器的 web 应用之间的交互。这些攻击是可能的,因为 web 浏览器会自动向网站发送每个请求的身份验证令牌。这种形式的攻击也称为 一键式攻击 或 会话 riding ,因为攻击利用用户以前的经过身份验证的会话。
ASP.NET Core 阻止跨站点请求伪造 (XSRF/CSRF) 攻击
过了年,马上就到金三银四了,有意跳槽的小伙伴们趁着过年这段时间好好准备吧。加油,骚年!
最后,祝大家学习愉快! 来源:https://blog.csdn.net/sud423/article/details/122687095 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |