ASP.NET Core 中的响应缓存中间件

CacheCow:在.NET Core和4.5.2+中为客户端和服务器实现HTTP缓存的实现 CacheCow .NET Core和4.52+中针对HttpClient,ASP.NET Web API,ASP.NET MVC Core和的HTTP缓存的实现。 本文档涵盖以下主题: 入门: 注意:版本2.0.0中的重大更改 由于CacheCow的服务器端实现中有很多更改,而客户端的大部分保持不变。 因此,如果您过去曾经使用过CacheCow.Server并且想要迁移,请进一步阅读有关迁移的指南。 CacheCow.Client进行了一些更改,这些更改可能会或可能不会破坏您的代码(取决于您是否使用过.NET 4.5软件包),其中包括: 现在所有接口都完全异步 许多高速缓存存储不再维护和可用,包括:MongoDb,Memcached,文件和Elasticsearch。 目前仅支持Redis,SQL和InMemory,但如果您要添加存储,我可以接受PR。 ICacheStore实现可选地支持不再支持的缓存配额管理接口。 将CacheCow客户端标头从“ x-cachecow”重命名为“ x-cachecow-client” CacheCow.Client现在将从服务器接收的 立即下载

本文介绍如何在 ASP.NET Core 应用程序中配置响应缓存中间件。 中间件确定响应何时可缓存、存储响应,并提供来自缓存的响应。 有关 HTTP 缓存和属性的介绍 [ResponseCache] ,请参阅响应缓存。

配置

响应缓存中间件可通过共享框架隐式地用于 ASP.NET Core 应用。
在 Startup.ConfigureServices中 ,将响应缓存中间件添加到服务集合中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCaching();
    services.AddRazorPages();
}

使用UseResponseCaching扩展方法将应用程序配置为使用中间件,该方法将中间件添加到Startup.Configure中的请求处理管道中。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
    }

    app.UseStaticFiles();
    app.UseRouting();
    // UseCors must be called before UseResponseCaching
    // app.UseCors("myAllowSpecificOrigins");

    app.UseResponseCaching();

    app.Use(async (context, next) =>
    {
        context.Response.GetTypedHeaders().CacheControl = 
            new Microsoft.Net.Http.Headers.CacheControlHeaderValue()
            {
                Public = true,
                MaxAge = TimeSpan.FromSeconds(10)
            };
        context.Response.Headers[Microsoft.Net.Http.Headers.HeaderNames.Vary] = 
            new string[] { "Accept-Encoding" };

        await next();
    });

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
    });
}

警告
使用CORS中间件时,必须在UseResponseCaching之前调用UseCors。

该示例应用程序添加了标头来控制后续请求的缓存:

  • Cache-Control:最多可缓存10秒钟的可缓存响应。
  • Vary:仅在后续请求的Accept-Encoding标头与原始请求的标头匹配时,才将中间件配置为提供缓存的响应。
// using Microsoft.AspNetCore.Http;

app.Use(async (context, next) =>
{
    context.Response.GetTypedHeaders().CacheControl = 
        new Microsoft.Net.Http.Headers.CacheControlHeaderValue()
        {
            Public = true,
            MaxAge = TimeSpan.FromSeconds(10)
        };
    context.Response.Headers[Microsoft.Net.Http.Headers.HeaderNames.Vary] = 
        new string[] { "Accept-Encoding" };

    await next();
});

前面的标头不会写入响应,并且在控制器,操作或Razor时被覆盖:

  • 具有[ResponseCache]属性。 即使未设置属性也是如此。 例如,省略VaryByHeader属性将导致从响应中删除相应的标头。

响应缓存中间件仅缓存服务器响应,导致了200(正常)状态代码。 中间件将忽略任何其他响应,包括错误页。

警告

包含经过身份验证的客户端的内容的响应必须标记为不可缓存,以防中间件存储和服务这些响应。
有关中间件如何确定响应是否可缓存的详细信息,请参阅缓存的条件。

选项

响应缓存选项如下表中所示

选项
选项说明
MaximumBodySize响应正文的最大可缓存大小(以字节为单位)。 默认值为 64 * 1024 * 1024 (64 MB)。
SizeLimit响应缓存中间件的大小限制(以字节为单位)。 默认值为 100 * 1024 * 1024 (100 MB)。
UseCaseSensitivePaths确定是否将响应缓存在区分大小写的路径上。 默认值为 false。

以下示例将中间件配置为:

  • 缓存正文大小小于或等于1,024字节的响应。
  • 通过区分大小写的路径存储响应。 例如,/page1和/Page1分别存储。
services.AddResponseCaching(options =>
{
    options.MaximumBodySize = 1024;
    options.UseCaseSensitivePaths = true;
});

VaryByQueryKeys

使用MVC/Web API控制器或Razor Pages页面模型时,[ResponseCache]属性指定设置适当的响应缓存标头所需的参数。严格要求中间件使用的[ResponseCache]属性的唯一参数是VaryByQueryKeys,它不对应于实际的HTTP标头。 有关更多信息,请参见ASP.NET Core中的响应缓存。

不使用[ResponseCache]属性时,可以使用VaryByQueryKeys更改响应缓存。 直接从HttpContext.Features使用ResponseCachingFeature:

var responseCachingFeature = context.HttpContext.Features.Get<IResponseCachingFeature>();

if (responseCachingFeature != null)
{
    responseCachingFeature.VaryByQueryKeys = new[] { "MyKey" };
}

在VaryByQueryKeys中使用等于*的单个值会根据所有请求查询参数来改变缓存。

响应缓存中间件使用的 HTTP 标头

下表提供了有关影响响应缓存的 HTTP 标头的信息。

Header详细信息
Authorization如果标头存在,则不会缓存响应。
Cache-Control中间件仅考虑标记有public cache指令的缓存响应。 使用以下参数控制缓存:
max-age
max-stale†
min-fresh
must-revalidate
no-cache
no-store
only-if-cached
private
public
s-maxage
proxy-revalidate‡
†如果没有为max-stale指定任何限制,则中间件不采取任何措施。
‡ proxy-revalidate与 must-revalidate 具有相同的效果。
有关详细信息,请参阅RFC 7231:请求缓存控制指令。
PragmaPragma: no-cache请求中的标头将产生与相同的效果 Cache-Control: no-cache 。 标头中的相关指令 Cache-Control (如果存在)将重写此标头。 考虑向后兼容 HTTP/1.0。
Set-Cookie如果标头存在,则不会缓存响应。 请求处理管道中设置一个或多个 cookie 的任何中间件会阻止响应缓存中间件缓存响应(例如,基于 cookie 的 TempData 提供程序)。
VaryVary标头用于根据另一个标头改变缓存的响应。 例如,通过包含标头来缓存响应, Vary: Accept-Encoding 此标头将使用标头和单独的请求来缓存响应 Accept-Encoding: gzip Accept-Encoding: text/plain 。 永远不会存储标头值 * 为的响应。
Expires除非由其他标头重写,否则不会存储或检索此标头过时的响应 Cache-Control 。
If-None-Match如果值不为 * ,并且响应的与提供的任何值都不匹配,则将从缓存中提供完整响应 ETag 。 否则,将提供304(未修改)响应。
If-Modified-Since如果 If-None-Match 标头不存在,则在缓存的响应日期比提供的值更新时,将从缓存中提供完整响应。 否则,将提供304-未修改响应。
Date从缓存提供时, Date 如果未在原始响应中提供标头,中间件将设置标头。
Content-Length从缓存提供时, Content-Length 如果未在原始响应中提供标头,中间件将设置标头。
AgeAge忽略原始响应中发送的标头。 中间件在为缓存的响应提供服务时计算一个新值。

缓存遵从请求缓存控制指令

中间件遵守HTTP 1.1缓存规范的规则。 规则需要缓存来兑现客户端发送的有效Cache-Control标头。 根据该规范,客户端可以使用no-cache标头值发出请求,并强制服务器为每个请求生成新的响应。 当前,使用中间件时,开发人员无法控制这种缓存行为,因为中间件遵守官方缓存规范。

若要更好地控制缓存行为,请探索ASP.NET Core的其他缓存功能。 请参阅以下主题:

  • ASP.NET Core 中的缓存内存
  • ASP.NET Core 中的分布式缓存
  • ASP.NET Core MVC 中的缓存标记帮助程序
  • ASP.NET Core 中的分布式缓存标记帮助程序

疑难解答

如果缓存行为与预期的不同,请确认响应是可缓存的并且能够从缓存中得到响应。 检查请求的传入标头和响应的传出标头。 启用日志记录以帮助调试。

在对缓存行为进行测试和故障排除时,浏览器可能会设置以不希望的方式影响缓存的请求标头。 例如,当刷新页面时,浏览器可以将Cache-Control标头设置为no-cache或max-age = 0。 以下工具可以显式设置请求标头,并且是测试缓存的首选工具:

  • Fiddler
  • Postman

缓存条件

  • 请求必须导致服务器响应,状态代码为200(正常)。
  • 请求方法必须为 GET 或 HEAD。
  • 在Startup.Configure中,必须将响应缓存中间件置于需要缓存的中间件之前。 有关详细信息,请参阅ASP.NET Core中间件。
  • Authorization标头不得存在。
  • Cache-Control标头参数必须是有效的,并且响应必须标记 public 且未标记 private 。
  • 如果不存在Cache-Control标头,则必须不存在Pragma:no-cache标头,因为Cache-Control标头在存在时会覆盖Pragma标头。
  • Set-Cookie标题不得存在。
  • Vary标头参数必须有效并且不等于 * 。
  • Content-Length标头值(如果已设置)必须与响应正文的大小匹配。
  • IHttpSendFileFeature不使用。
  • 响应必须不过期,如Expires标头以及max-age和s-maxage缓存指令所指定。
  • 响应缓冲必须成功。 响应的大小必须小于配置的或默认值 SizeLimit 。 响应的正文大小必须小于配置的或默认值
    MaximumBodySize 。
  • 必须根据RFC 7234规范来缓存响应。 例如, no-store 指令在请求或响应标头字段中不得存在。
    有关详细信息,请参见第3节:在RFC 7234的缓存中存储响应。

备注

用于生成安全令牌以防止跨站点请求伪造(CSRF)攻击的防伪系统将Cache-Control和Pragma标头设置为no-cache,这样就不会缓存响应。 有关如何为HTML表单元素禁用防伪令牌的信息,请参见阻止跨站点请求伪造(XSRF / CSRF)攻击ASP.NET Core。

YOLOv13涨点改进| CVPR 2026 |独家创新首发、主干改进篇 |利用RIS-PiDiNet主干让YOLOv13更加强大!适合遥感目标检测、小目标检测、旋转目标检测,变化检测,图像分割涨点 🔥本文提出了一种改进的RIS-PiDiNet主干网络,通过引入几何先验构建几何一致性检测器,显著提升了模型在任意方向、结构规则目标场景下的检测性能。包含两个核心模块:S-PDC利用极谐变换的谐波核建模目标结构对称性,RIS-PDC通过SO(2)群平均实现旋转不变性。网络采用基于RIS-block的主干结构并融合轻量级LBP特征,增强了细粒度结构表达能力。实验表明,该方法特别适用于遥感和复杂几何分布场景,能有效提升目标检测的鲁棒性和精度。文章还详细介绍了如何将RIS-PiDiNet集成到YOLOv13框架 阅读详情

相关推荐

Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)

目录 一、Java的打印简介 二、Java打印实现 2.1 JPG图片文件格式打印实现 2.2 PDF文件格式打印实现 2.3 Word文件格式打印实现 2.3.1 Word文件采用jacob插件进行打印实现。 2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用) 三、总结 一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Jav...

vatxiongxiaohui的专栏 8万+

.net ResponseCache简单使用

.net ResponseCache简单使用 注册服务 services.AddResponseCaching(); 启用中间件 在需要使用缓存的地方使用ResponseCache特性,Duration表示缓存的绝对过期时间 [HttpGet] [ResponseCache(Duration = 5)] public object CacheTest() { Console.WriteLine("访问了Action"); return DateTime.Now; } 多次访问Cache

m0_47659279的博客 549

CORS(跨域资源共享)漏洞解决方法

最近,测试环境上的项目被360测试人员检测出来有一个CORS漏洞,以下记录下漏洞问题与解决方法。 一、低危漏洞:CORS漏洞问题 测试人员访问某个url,将请求头中的Origin字段修改为任意值,结果仍然能获得正确的响应报文,就说明有CORS漏洞。 当CORS的设置不正确时,就会带来安全问题;当响应头中的Access-Control-Allow-Origin设置为null或*时,表示信任任何域,这时候就可能引入安全问题。 修复方法是合理配置CORS,判断Origin是否合法;具体说就是不让在nginx或t

BHSZZY的博客 3万+

c# .net core 设置缓存

1、开启ResponseCaching的缓存(ResponseCaching相当于老版本的OutPutCache):   在Startup.cs文件中设置: public void ConfigureServices(IServiceCollection services) { services.AddResponseCachi...

weixin_30636089的博客 978

AVL(Athena Vortex Lattice)如何编写与应用(一)

前两个是弦向的涡个数和以cos函数分布的间距参数(设为1即可)后两个可以在这里声明也可以写到后面的每一个section中,是展向的涡个数和以sin函数分布的间距参数。这个文件是用来建立飞机模型的文件,是一定要有的文件,其他的.run和.mass并不是必须要有的,甚至mass文件并没有看到有人在使用。Sref、Cref、Bref是飞机的参考面积参考弦长和参考的展长,我的理解就是所设计飞机的S,c,b这三个参数。———————————————以上是飞机的基本信息———————————————

dawangaa的博客 1508

vasp算表面吸附流程_VASP表面吸附计算实例分析

本文主要为了记录在学习Vasp计算过程中如何设置INCAR中的一些参数,并不着重讲解其含义,详见可自行到vasp官网查阅。其次关于建模部分也不做细致讨论,一般结构可从Materials Studio里自带的晶体数据库导出,或从三大数据库网站上下载:1、Materaials Project网址:https://materialsproject.org/(强烈推荐,邮箱注册即可使用)2、CCDC网址:...

weixin_39617669的博客 2240

Asp.NET Core 缓存问题的总结

一、HTTP响应缓存报文头 cache-control 二、内存缓存(In-memory Cache) 三、分布式缓存 四、缓存穿透问题 五、缓存雪崩问题

weixin_42299709的博客 1214

fMRI数据处理:从DICOM到NIFTI(下)

上一篇我们完成了对原始DICOM的数据整理,将其整理为了BIDS目录结构。作为从从DICOM到NIFTI的最后一篇,当然是介绍如何批量将DICOM格式转NIFTI格式啦!从DICOM到NIFTI系列就完成啦!撒花★,°.°★。从核磁机器把数据拷回来——到整理成BIDS格式——到批量转格式;我们fMRI数据处理的第一步就算是正式迈出去啦!接下来的内容,敬请期待吧~

weixin_44933894的博客 2078

一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存

3、支持缓存类别:本地缓存:InMemory,SQLite;这是一个基于.Net Core开发的缓存中间件,它支持各种缓存并提供了很多高级功能。3、支持多种缓存系列化:BinaryFormatter、Newtonsoft.Json,MessagePack和Protobuf;》,今天再给大家推荐一个缓存中间件,两者功能差不多,都是提供统一接口、多级缓存、分布式缓存、支持多种Provider等。4、支持缓存AOP:able, put,evict,可以简化我们的代码量;2、基于Net 6.0开发。

成长的足迹 2087

Python爬虫实战:基于最新技术栈的晋江文学城小说爬取

本文将详细介绍如何使用Python最新技术栈构建一个高效的晋江文学城小说爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、分布式爬虫设计以及数据存储优化等高级话题。文章包含完整的代码实现,使用aiohttp+asyncio实现异步爬取,Playwright处理动态渲染,并结合Redis实现分布式任务队列。本文旨在为读者提供一个全面的现代Python爬虫开发指南。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据分析和内容聚合等领域。

2201_76125261的博客 869

海外购物商城源码 带即时通讯IM源码

在海外购物商城中,即时通讯IM源码可以为用户提供更便捷、高效的沟通方式,帮助解决跨国交易中的语言和文化差异问题。总之,即时通讯IM源码在海外购物商城中扮演着重要的角色,可以为用户提供更方便、高效的沟通方式,解决跨国交易中的语言和文化差异问题。(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买)实时翻译:即时通讯IM源码提供实时翻译功能,能够快速准确地翻译不同语言之间的文字、语音、视频等信息,帮助用户克服语言障碍。

很酷的站长的博客 259

谈谈ASP.NET Core中的ResponseCaching

前言 前面的博客谈的大多数都是针对数据的缓存,今天我们来换换口味。来谈谈在ASP.NET Core中的ResponseCaching,与ResponseCaching关联密切的也就是常说的HTTP缓存。 在阅读本文内容之前,默认各位有HTTP缓存相关的基础,主要是Cache-Control相关的。 这里也贴两篇相关的博客: 透过浏览器看HTTP缓存 HTTP协议 (四) 缓存 回到正题,对于A...

weixin_34380948的博客 512

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

asp.net core 系列之Response caching(1)

这篇文章简单的讲解了response caching: 讲解了cache-control,及对其中的头和值的作用,及设置来控制response caching; 简单的罗列了其他的缓存技术:In-memory caching ,Distributed Cache ,Cache Tag Helper ,Distributed Cache Tag Helper ; 讲解了使用Re...

weixin_30768661的博客 284

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ASP.NET Core 中的分布式缓存 IDistributedCache IMemoryCache

ASP.NET Core 中的缓存内存(MemoryCache) ASP.NET Core 中的分布式缓存 响应缓存在 ASP.NET Core 中的中间件 分布式 Redis 缓存 分布式 SQL Server 缓存 Cache GitHub 地址 Net Framewoke 中常用的缓存有两种: System.Runtime.Caching 和 System.Web.Caching.....................

KingCruel的专栏 2558

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ASP.NET Core 中间件

中间件 中间件是用于组成应用程序管道来处理请求和响应的组件。管道内的每一个组件都可以选择是否将请求交给下一个组件、并在管道中调用下一个组件之前和之后执行某些操作。请求委托被用来建立请求管道,请求委托处理每一个 HTTP 请求。 请求委托通过使用 IApplicationBuilder 类型的 Run、Map 以及 Use 扩展方法来配置,并在 Startup 类中传给 Configure 方法 。每个单独的请求委托都可以被指定为一个内嵌匿名方法,或其定义在一个可重用的类中。这些可重用的类被称作 中间件 或

随笔 325

性能优化万金油:缓存

ASP.NET Coreh缓存学习

zhmen的博客 256

ASP.NET Core ResponseCaching:基于 VaryByHeader 定制缓存 Key

ASP.NET Core ResponseCaching 提供了缓存http响应内容的能力,通过它可以在本地内存中直接缓存http响应内容,这是速度最快的服务端缓存,省却了网络传输与生成响应内容的开销,是 Memcached 或 Redis 等分布式缓存的有效补充。欲更多了解ResponseCaching ,推荐阅读园子里的一篇博文谈谈ASP.NET Core中的ResponseCaching...

weixin_34348174的博客 132

.net core 2.x - 缓存的四种方式

其实这些微软docs都有现成的,但是现在的人想对浮躁些,去看的不会太多,所以这里就再记录下 ,大家一起懒一起浮躁,呵呵. 0.基础知识 通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性。缓存对不经常更改的数据效果最佳。缓存生成的数据副本的返回速度可以比从原始源返回更快。在编写并测试应用时,应避免依赖缓存的数据。ASP.NET Core 支持多种不同的缓存...

weixin_30263277的博客 277

ASP.NET Core面试精讲:请求优化与缓存策略实战

ASP.NET Core作为现代Web开发的核心框架,其请求处理管道和缓存机制是构建高性能应用的关键。中间件管道通过模块化设计处理HTTP请求,开发者可通过调整中间件顺序和优化静态资源配置显著提升性能。响应缓存技术利用ETag和分布式缓存实现资源高效复用,在高并发场景下可降低40-60ms延迟。本文结合电商和金融项目实战案例,深入解析自定义Tag Helpers开发、管道性能调优技巧,以及如何避免中间件常见陷阱,为面试和工程实践提供可直接复用的解决方案。

weixin_34327223的博客 286

深入ASP.NET Core中间件短路原理(架构师级性能调优必备)

掌握ASP.NET Core中间件的短路技巧,提升请求处理性能。适用于高并发场景,通过终止后续管道执行,减少资源消耗,显著降低响应延迟。结合Use、Run与Map方法精准控制流程,实现高效请求拦截与响应。架构优化关键策略,值得收藏。

QuickDebug的博客 260

终极指南:ImageSharp图片处理中间件在ASP.NET Core中的实战应用

ASP.NET Core作为现代Web开发的强大框架,提供了丰富的中间件支持来处理各类Web请求。ImageSharp作为一款功能强大的跨平台图像处理库,能够与ASP.NET Core完美集成,为开发者提供高效的图片处理解决方案。本文将详细介绍如何在ASP.NET Core项目中集成和使用ImageSharp图片处理中间件,帮助开发者轻松实现图片的裁剪、缩放、滤镜等常见操作。 ## 为什么选择I

gitblog_00011的博客 494

.NET企业应用:TranslateGemma中间件开发

本文介绍了如何在星图GPU平台上自动化部署【ollama】translategemma-12b-it镜像,构建.NET企业级翻译中间件。该方案支持55种语言的高质量互译,可应用于电商平台的动态内容国际化、多语言客服系统等场景,为企业提供高效、安全的多语言解决方案。

weixin_32102617的博客 196

.Net环境下的缓存技术

1         概念1.1   缓存能解决的问题· 性能——将相应数据存储起来以避免数据的重复创建、处理和传输,可有效提高性能。比如将不改变的数据缓存起来,例如国家列表等,这样能明显提高web程序的反应速度;· 稳定性——同一个应用中,对同一数据、逻辑功能和用户界面的多次请求时经常发生的。当用户基数很大时,如果每次请求都进行处理,消耗的资源是很大的浪费,也同时造成系统的不稳定。例如

262

还在让请求走完整pipeline?,立即掌握中间件短路的5种高阶用法

掌握ASP.NET Core中间件短路技巧,避免请求走完整pipeline。详解5种高阶用法,涵盖身份验证、静态资源拦截等场景,提升性能与响应速度。合理终止请求流,优化应用效率,值得收藏。

AlgoPerch的博客 435

5个关键技巧:掌握Giraffe框架的函数式Web开发精髓

Giraffe是一个专为F#开发者设计的原生函数式ASP.NET Core Web框架,通过独特的HttpHandler设计和函数组合机制,为现代Web应用开发带来了全新的编程范式。本文将深入解析Giraffe的核心概念,分享实际应用技巧,并探讨如何利用函数式编程优势构建高性能Web应用。 ## 理解HttpHandler:Giraffe的核心构建块 在Giraffe中,HttpHandler

gitblog_01060的博客 454
上一篇: RegexOptions枚举
下一篇: pdf.js实现的PDF加载到页面查看简单示例
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值