从网上收集整理的 ASP.NET Core 笔试题。

# 题目

  1. 如何在 ASP.NET Core 中激活 Session 功能?
  2. 什么是中间件?
  3. ApplicationBuilder 的 Use 和 Run 方法有什么区别?
  4. 如何使 TagHelper (标记辅助) 在元素这一层上失效?
  5. 什么是 ASP.NET Core?
  6. ASP.NET Core 中 AOP 的支持有哪些?
  7. ASP.NET Core Filter 的注册方式有哪些?
  8. ASP.NET Core Filter 如何支持依赖注入?
  9. ASP.NET Core 如何读取配置文件中的内容?
  10. ASP.NET Core 有哪些好的功能?
  11. ASP.NET Core 主要的特性
  12. Startup.cs 的作用?
  13. Server.Transfer 和 Response.Redirect 的区别是什么?
  14. API,什么时候用 Get/Post/Put/Delete?
  15. 依赖注入后的服务生命周期?
  16. 如何启用 Cors?
  17. 简述对 RESTful 的理解。

-- 答案分割线 --


# 答案

  1. 如何在 ASP.NET Core 中激活 Session 功能?
    (1) 第一步,在 Startup ConfigureServices 中添加任意 IDistributedCache 缓存,如内存缓存:AddDistributedMemoryCache。如果需要使用 Redis 或 SqlServer 等其他分布式缓存服务器,需要安装对应的包。
    (2) 第二步,在 Startup ConfigureServices 中添加 Session:AddSession ()。
    (3) 第三步,在 Startup Configure 中调用 Session:UseSession ()。

  2. 什么是中间件?
    中间件是一种装配到应用管道以处理请求和响应的组件。每个组件可以:
    (1) 选择是否将请求传递到管道中的下一个组件。
    (2) 可以在管道中的下一个组件前后执行工作。

  3. ApplicationBuilder 的 Use 和 Run 方法有什么区别?
    (1) Use:通过 Use 的方式注册中间件,可以控制是否将请求传递到下一个中间件。
    (2) Run:通过 Run 的方式注册中间件,一般用于短路或请求管道末尾,即不会将请求传递给下一个中间件。

  4. 如何使 TagHelper (标记辅助) 在元素这一层上失效?
    使用叹号。

  5. 什么是 ASP.NET Core?
    ASP.NET Core 是 ASP.NET 的升级版本,是基于.NET Core 的开源 Web 开发框架,可以跨平台运行在 Windows、Linux、macOS 上,更快、更容易配置、更模块化、可扩展性更强。

  6. ASP.NET Core 中 AOP 的支持有哪些?
    通过 Filter(过滤器)支持 AOP。有以下类型:
    (1) AuthorizationFilter (授权过滤器)
    (2) ResourceFilter (资源过滤器)
    (3) ExceptionFilter (异常过滤器)
    (4) ActionFilter (操作过滤器)
    (5) ResultFilter (结果过滤器)

    注:Filter 也翻译为筛选器(微软在线文档)、拦截器、过滤器

  7. ASP.NET Core Filter 的注册方式有哪些?
    (1) 方法注册,只对方法生效。
    (2) 控制器注册,对控制器内的所有方法生效。
    (3) 全局注册,对整个应用程序生效。

  8. ASP.NET Core Filter 如何支持依赖注入?
    (1) 通过全局注册支持依赖注入;
    (2) 通过 ServiceFilter 和 TypeFilter 支持依赖注入。其中:
    ① ServiceFilter 和 TypeFilter 都实现了 IFilterFactory
    ② ServiceFilter 需要对自定义的 Filter 进行注册,TypeFilter 不需要
    ③ ServiceFilter 的 Filter 生命周期源于注册的生命周期,TypeFilter 每次都会创建一个新的实例

  9. ASP.NET Core 如何读取配置文件中的内容?
    通过 IConfiguration 接口读取配置

此题答案不全,还有其他方式读取
参考 ASP.NET Core 中的配置

  1. ASP.NET Core 有哪些好的功能?
    (1) 依赖注入
    (2) 日志系统架构
    (3) 引入了一个跨平台的网络服务器 kestrel,可以在没有 IIS、apache、nginx 就可以单独运行
    (4) 可以使用命令行创建应用
    (5) 使用 appsettings.json 配置程序
    (6) 使用 Startup 配置服务和应用的请求管道
    (7) 更好地支持异步编程
    ...

  2. ASP.NET Core 主要的特性
    答案和题目 10 一样

  3. Startup.cs 的作用?
    配置服务和应用的请求管道。

  4. Server.Transfer 和 Response.Redirect 的区别是什么?
    (1) Server.Transfer 仅是服务器控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址。
    (2) Response.Redirect 则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接,在客户端浏览器地址栏中可以看到跳转后的地址。

  5. API,什么时候用 Get/Post/Put/Delete? 
    (1) Get: 查询
    (2) Post: 创建对象
    (3) Put: 修改对象
    (4) Delete: 删除

  6. 依赖注入后的服务生命周期?
    (1) 单例 (Singleton): 服务只有一个实例被创建,这个实例存储在内存中,可以在整个应用程序中使用。单例服务必须是线程安全的,通常在无状态服务中使用。
    (2) 作用域 (Scoped): 在作用域(如单个请求)中只创建一个服务实例。在处理请求的应用中,在请求结束时会释放有作用域的服务。
    (3) 瞬态 (Transient): 每次调用服务都会创建一个新的实例。在处理请求的应用中,在请求结束时会释放瞬态服务。

  7. 如何启用 Cors?
    (1) 第一步,在 Startup ConfigureServices 中添加 Cors:AddCors
    (2) 第二步,在 Startup Configure 中调用 Cors:UseCors

  8. 简述对 RESTful 的理解。
    RESTful 是一个流行的接口设计规范。在该规范中使用 Http 接口请求方法类型区分操作类型:
    (1) Get: 查询
    (2) Post: 创建资源
    (3) Put: 修改资源(客户端提供完成的资源数据)
    (4) Patch: 修改资源(客户端提供需要修改的数据)
    (5) Delete: 删除