随笔分类 -  .NET

与.NET相关的文章(非ASP.NET)
摘要:咱们都知道,MVC在输入/输出中都需要模型绑定。因为HTTP请求发送的都是文本,为了使其能变成各种.NET 类型,于是在填充参数值之前需 ModelBinder 的参与,以将文本转换为 .NET 类型。 尽管 ASP.NET Core 已内置基础类型和复杂类型的各种 Binder,但有些数据还是不能 阅读全文
posted @ 2022-12-18 18:04 东邪独孤 阅读(1764) 评论(2) 推荐(9)
摘要:IActionHttpMethodProvider 接口的结构很简单,实现该接口只要实现一个属性即可——HttpMethods。该属性是一个字符串序列。 这啥意思呢?这个字符串序列代表的就是受支持的 HTTP 请求方式。比如,如果此属性返回 GET POST,那么被修饰的对象既支持 HTTP-GET 阅读全文
posted @ 2022-12-11 12:45 东邪独孤 阅读(575) 评论(0) 推荐(3)
摘要:MVC的路由规则配置方式比较多,咱们用得最多的是两种: A、全局规则。就是我们熟悉的”{controller}/{action}“。 app.MapControllerRoute( name: "bug", pattern: "{controller}/{action}" ); app.MapCon 阅读全文
posted @ 2022-12-01 18:00 东邪独孤 阅读(2871) 评论(2) 推荐(15)
摘要:在上一篇中,老周演示了通过实现约定接口的方式自定义控制器的名称。 至于说自定义操作方法的名称,就很简单了,因为有内置的特性类可以用。看看下面的例子。 [Route("[controller]/[action]")] public class StockController : Controller 阅读全文
posted @ 2022-11-19 10:42 东邪独孤 阅读(1167) 评论(4) 推荐(3)
摘要:从本篇起,老周会连发N篇水文,总结一下在 MVC 项目中控制器的各种自定义配置。 本文内容相对轻松,重点讨论一下 MVC 项目中的各种约定接口。毕竟你要对控制器做各种自定义时,多数情况会涉及到约定接口。约定接口的结构都差不多,均包含一个 Apply 方法,实现类需要通过这个方法修改关联的模型设置。 阅读全文
posted @ 2022-11-13 17:53 东邪独孤 阅读(878) 评论(1) 推荐(3)
摘要:在开始今天的表演之前,老周先跟大伙伴们说一句:“中秋节快乐”。 今天咱们来聊一下如何自己动手,实现会话(Session)的存储方式。默认是存放在分布式内存中。由于HTTP消息是无状态的,所以,为了让服务器能记住用户的一些信息,就用到了会话。但会话数据毕竟是临时性的,不宜长久存放,所以它会有过期时间。 阅读全文
posted @ 2022-09-10 18:39 东邪独孤 阅读(1812) 评论(0) 推荐(2)
摘要:今天咱们来扯一下 Blazor 应用程序怎么访问 HttpContext。其实这句话有坑,为了避免大伙伴们掉茅坑,老周直接说明:Blazor 是不能访问 HttpContext 的。哪怕你在服务容器中注册了 IHttpContextAccessor 也不行,无法返回有效的上下文。 为啥?这得从 Bl 阅读全文
posted @ 2022-09-04 11:20 东邪独孤 阅读(2238) 评论(0) 推荐(5)
摘要:咱们继续上一个话题。先简单复习一下,根据老周前面文章的介绍,选项类体系的基本套路是通过 IOptionsFactory 来创建选项类实例的。而我们在服务容器(IServiceCollection)上是用Configure、PostConfigure 等扩展方法去配置选项类的(设置属性的值)。配置代码 阅读全文
posted @ 2022-07-30 10:39 东邪独孤 阅读(981) 评论(1) 推荐(2)
摘要:在 .NET 中,配置与选项模式其实有联系的(这些功能现在不仅限于 ASP.NET Core,而是作为平台扩展来提供,在其他.NET 项目中都能用)。配置一般从多个来源(上一篇水文中的例子,记得否?)来读取数据,最后以 Key - Value 的方式加载到应用程序中,然后应用程序可以读取配置。这些来 阅读全文
posted @ 2022-07-23 18:21 东邪独孤 阅读(960) 评论(1) 推荐(4)
摘要:本文的主题是简单说说如何实现 IConfigurationSource、IConfigurationProvider 接口来自定义一个配置信息的来源,后面老周给的示例是实现用 CSV 文件进行应用配置。 在切入主题之前,老周忽然酒兴大发,打算扯一些跟主题有关系的题外话。 关于 ASP.NET Cor 阅读全文
posted @ 2022-07-09 19:37 东邪独孤 阅读(916) 评论(0) 推荐(2)
摘要:前面在写模型绑定相关的水文时,老周遗漏了一篇,特地补一下。 在 99.996 % 的情况下,咱们是不推荐自定义 Binder 的,毕竟那样做会增加开发工作量。其实内置的各种 Binder 基本能对付了。比较多见的情况应该是给字段另起一个名字。 举个示例,假设有下面这样一个类,它表示你家里的某台主机的 阅读全文
posted @ 2022-06-26 18:55 东邪独孤 阅读(328) 评论(0) 推荐(0)
摘要:下面又到了老周误人子弟的时间,今天要误大伙的话题是:找找有多少种方法可以设置 ASP.NET Core 应用的地址,即 URL。 精彩马上开始! 1、UseUrls 方法 这是一个扩展方法,参数是可变个数的字符串数组。所以,每传一个参数就代表一个 URlL。例如 var builder = WebA 阅读全文
posted @ 2022-06-06 12:05 东邪独孤 阅读(1892) 评论(3) 推荐(7)
摘要:今天老周和大伙伴们聊聊有关 Url Rewrite 的事情,翻译过来就是 URL 重写。 这里不得不提一下,URL重定向与重写的不同。 1、URL重定向是客户端(通常是浏览器)向服务器请求地址A,然后服务器要求重定向到B,返回状态码 301 或 302 给客户端,并且夹带一个 Location 的标 阅读全文
posted @ 2022-05-16 19:07 东邪独孤 阅读(1628) 评论(3) 推荐(4)
摘要:如果项目不大,或者是客户公司内部使用,或者不想花钱购买证书,又或者用于开发阶段测试……完全可以使用自签名证书。 所谓自签,就是自己给自己签名颁发的证书,自给自足,丰衣足食。 生成证书的方法和工具很多,你可能会想到用以前 .NET Framework SDK工具,你可能想到用 OpenSSL 工具。但 阅读全文
posted @ 2022-04-20 17:33 东邪独孤 阅读(2113) 评论(3) 推荐(6)
摘要:在上一篇文章中,老周介绍了用自定义 ModelBinder 的方式实现一个 API(或MVC操作方法)可以同时支持 JSON 格式和 Form-data 格式的数据正文。今天该轮到 InputFormatter 了——接下来老周会演示如何实现自定义的 InputFormatter,使其可以读取 CS 阅读全文
posted @ 2022-03-28 19:18 东邪独孤 阅读(721) 评论(2) 推荐(3)
摘要:本篇老周就和老伙伴们分享一下,对于客户端提交的不规范 Body 如何做模型绑定。不必多说,这种情况下,只能自定义 ModelBinder 了。而且最佳方案是不要注册为全局 Binder——毕竟这种特殊情况是针对极少数情形的,咱们没必要去干扰标准格式的正常运行(情况复杂,特殊 binder 注册为全局 阅读全文
posted @ 2022-03-26 13:03 东邪独孤 阅读(1710) 评论(4) 推荐(4)
摘要:在上一篇文章中,老周给大伙伴们大致说了下 MVC 下的模型绑定,今天咱们进行一下细化,先聊聊模型绑定中涉及到的一些组件对象。 一、ValueProvider——提取绑定源的值 首先登场的小帅哥是 ValueProvider,即实现 IValueProvider 接口。 public interfac 阅读全文
posted @ 2022-03-24 17:02 东邪独孤 阅读(1781) 评论(1) 推荐(4)
摘要:欢迎来到老周的水文演播中心。 咱们都知道,MVC的控制器也可以用来实现 Web API 的(它们原本就是一个玩意儿),区别嘛也就是一个有 View 而另一个没有 View(严格上讲,还不能谈区别,只能说功能范围吧)。于是,在依赖注入的服务容器中,我们可以这样添加功能: var builder = W 阅读全文
posted @ 2022-03-18 12:04 东邪独孤 阅读(1982) 评论(3) 推荐(3)
摘要:负责管理 HTTP 请求上下文的 HttpContext 对象有一个名为 RequestAborted 的属性。据其名思其义,就是可用来表示客户端请求是否已取消。 果然,它的类型是 CancellationToken,这家伙是结构类型,为啥强调是结构呢——因为是值类型啊。在访问 HTTP 的整个上下 阅读全文
posted @ 2022-03-06 17:39 东邪独孤 阅读(966) 评论(2) 推荐(3)
摘要:在上一篇烂文中老周已向各位介绍过 Produces 特性的使用,本文老周将介绍另一个特性类:FormatFilterAttribute。 这个特性算得上是筛选器的马甲,除了从 Attribute 类派生外,还实现了 IFilterFactory 接口。之所以说它是个马甲,是因为 IFilterFac 阅读全文
posted @ 2022-02-13 11:10 东邪独孤 阅读(2686) 评论(2) 推荐(5)