随笔分类 - ASP.NET Core
分享最有用的 ASP.NET Core 技巧。
摘要:在 .NET 中,配置与选项模式其实有联系的(这些功能现在不仅限于 ASP.NET Core,而是作为平台扩展来提供,在其他.NET 项目中都能用)。配置一般从多个来源(上一篇水文中的例子,记得否?)来读取数据,最后以 Key - Value 的方式加载到应用程序中,然后应用程序可以读取配置。这些来
阅读全文
摘要:本文的主题是简单说说如何实现 IConfigurationSource、IConfigurationProvider 接口来自定义一个配置信息的来源,后面老周给的示例是实现用 CSV 文件进行应用配置。 在切入主题之前,老周忽然酒兴大发,打算扯一些跟主题有关系的题外话。 关于 ASP.NET Cor
阅读全文
摘要:前面在写模型绑定相关的水文时,老周遗漏了一篇,特地补一下。 在 99.996 % 的情况下,咱们是不推荐自定义 Binder 的,毕竟那样做会增加开发工作量。其实内置的各种 Binder 基本能对付了。比较多见的情况应该是给字段另起一个名字。 举个示例,假设有下面这样一个类,它表示你家里的某台主机的
阅读全文
摘要:下面又到了老周误人子弟的时间,今天要误大伙的话题是:找找有多少种方法可以设置 ASP.NET Core 应用的地址,即 URL。 精彩马上开始! 1、UseUrls 方法 这是一个扩展方法,参数是可变个数的字符串数组。所以,每传一个参数就代表一个 URlL。例如 var builder = WebA
阅读全文
摘要:今天老周和大伙伴们聊聊有关 Url Rewrite 的事情,翻译过来就是 URL 重写。 这里不得不提一下,URL重定向与重写的不同。 1、URL重定向是客户端(通常是浏览器)向服务器请求地址A,然后服务器要求重定向到B,返回状态码 301 或 302 给客户端,并且夹带一个 Location 的标
阅读全文
摘要:如果项目不大,或者是客户公司内部使用,或者不想花钱购买证书,又或者用于开发阶段测试……完全可以使用自签名证书。 所谓自签,就是自己给自己签名颁发的证书,自给自足,丰衣足食。 生成证书的方法和工具很多,你可能会想到用以前 .NET Framework SDK工具,你可能想到用 OpenSSL 工具。但
阅读全文
摘要:在上一篇文章中,老周介绍了用自定义 ModelBinder 的方式实现一个 API(或MVC操作方法)可以同时支持 JSON 格式和 Form-data 格式的数据正文。今天该轮到 InputFormatter 了——接下来老周会演示如何实现自定义的 InputFormatter,使其可以读取 CS
阅读全文
摘要:本篇老周就和老伙伴们分享一下,对于客户端提交的不规范 Body 如何做模型绑定。不必多说,这种情况下,只能自定义 ModelBinder 了。而且最佳方案是不要注册为全局 Binder——毕竟这种特殊情况是针对极少数情形的,咱们没必要去干扰标准格式的正常运行(情况复杂,特殊 binder 注册为全局
阅读全文
摘要:在上一篇文章中,老周给大伙伴们大致说了下 MVC 下的模型绑定,今天咱们进行一下细化,先聊聊模型绑定中涉及到的一些组件对象。 一、ValueProvider——提取绑定源的值 首先登场的小帅哥是 ValueProvider,即实现 IValueProvider 接口。 public interfac
阅读全文
摘要:欢迎来到老周的水文演播中心。 咱们都知道,MVC的控制器也可以用来实现 Web API 的(它们原本就是一个玩意儿),区别嘛也就是一个有 View 而另一个没有 View(严格上讲,还不能谈区别,只能说功能范围吧)。于是,在依赖注入的服务容器中,我们可以这样添加功能: var builder = W
阅读全文
摘要:负责管理 HTTP 请求上下文的 HttpContext 对象有一个名为 RequestAborted 的属性。据其名思其义,就是可用来表示客户端请求是否已取消。 果然,它的类型是 CancellationToken,这家伙是结构类型,为啥强调是结构呢——因为是值类型啊。在访问 HTTP 的整个上下
阅读全文
摘要:在上一篇烂文中老周已向各位介绍过 Produces 特性的使用,本文老周将介绍另一个特性类:FormatFilterAttribute。 这个特性算得上是筛选器的马甲,除了从 Attribute 类派生外,还实现了 IFilterFactory 接口。之所以说它是个马甲,是因为 IFilterFac
阅读全文
摘要:开春首文,今天老周就跟各位大伙伴们聊一个很简单的话题:怎么设定API响应的数据格式。 说本质一点,就是设置所返回内容的 MIME 类型(Content-Type 头)。当然了,咱们不会使用在HTTP管道中插入中间件的方式来解决,因为: A、这样做会导致所有传入传出的HTTP消息都被修改; B、这样会
阅读全文
摘要:如果大伙伴们以前写过 ASP 或 PHP 之类的,相信各位对基于 Session 的身份验证很熟悉(其实在浏览器端是结合 Cookie 来处理的)。这种验证方式是比较早期的,操作起来也不复杂。 a、用户打开(或自动跳转到)登入页,输入你的大名和密码,登录。 b、提交到服务器,比较一下用户名和密码是否
阅读全文
摘要:今天老周要说的内容比较简单,所以大伙伴们不必紧张,能识字的都能学会。 在开始之前先来一段废话。 许多人都很关心,blazor 用起来如何?其实也没什么,做Web的无非就是后台代码+前台HTML(包含JS+CSS等)。Blazor 的初衷就是给咱们写C#的人用的,尽管不能完全代替 JS,但起码大多数情
阅读全文
摘要:在上一篇水文中,老周给大伙伴们简单演示了通过 Socket 编程的方式控制 MPD (在树莓派上)。按照计划,老周还想给大伙伴们演示一下使用 Web API 来封装对 MPD 控制。思路很 Easy,树莓派上使用本地 Socket 来封装一下,然后以 Web API 的方式对客户端公开。这样有一个好
阅读全文
摘要:提到 Blazor,没准就会有人问:选用 Server 端还是 WebAssembly(客户端)?其实这个不用纠结,老周个人的原则是:Server 端优先。理由很单纯:服务器端虽然消耗服务器上的资源,但加载速度快,而且不用下载组件(几个脚本也不大)。其实嘛,Web 应用都是消耗服务器资源的,不然要服
阅读全文
摘要:【闲聊 ASP.NET Core】第一期:项目与应用结构 【闲聊 ASP.NET Core】第二期:Web Host 初始化与生命周期事件 【闲聊ASP.NET Core】第三期:应用程序配置 【闲聊 ASP.NET Core】第四期:配置选项——Options 【闲聊ASP.NET Core】第五
阅读全文
摘要:有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点。 老周觉得,视频直播可能会好一些,虽然我的水平一般,不过直播时,老周可以现场演示,可能会比看博客效果要好(因为现场演示,有时候会有失误,没办法,水平有限)。还有一个,就
阅读全文
摘要:“导航属性”是实体框架用得算是比较频繁的概念。 首先,它是类型成员,其次,他是属性,这不是 F 话,而是明确它的本质。那么,什么场景下会用到导航属性呢?重点就落在“导航”一词上了,当实体 A 需要引用实体 B 时,实体 A 中需要公开一个属性,通过这个属性,能找到关联的实体 B。 又或者,X 实体表
阅读全文