asp.net-core – 如何检索当前响应体长度?
我需要检索响应体长度.
当我看到https://github.com/aspnet/HttpAbstractions/wiki/Rolling-Notes-Response-Stream-Contract时,据说:
这正是我需要的,但是httpContext.Response.Body.Length引发了NotSupportedException,并说“该流不可搜索”. 我应该使用委托流来计算每次写入的字节数吗? 解决方法
我假设您正在尝试从中间件中获取ContentLength?
这是一个中间件示例.在任何生成中间件(如useMVC或useStaticFiles)的响应之前,应将其添加到管道(startup.cs)中. public class ContentLengthMiddleware { RequestDelegate _next; public ContentLengthMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { using (var buffer = new MemoryStream()) { var request = context.Request; var response = context.Response; var bodyStream = response.Body; response.Body = buffer; await _next(context); Debug.WriteLine($"{request.Path} ({response.ContentType}) Content-Length: {response.ContentLength ?? buffer.Length}"); buffer.Position = 0; await buffer.CopyToAsync(bodyStream); } } } 由于在返回静态文件(png,js等)时我无法理解的原因,响应体将为空但是ContentLength设置为我使用response.ContentLength的原因? buffer.Length. (注意mod:抱歉两个问题的重复答案.另一个答案是错误发布,打开了太多标签.我删除了它并在此处重新发布了答案). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 初识ABP vNext(12):模块的独立运行与托管
- asp.net-mvc – 即使我设置CustomError =“On”,自定义错误
- asp.net-mvc – 在控制器中创建操作链接
- asp.net-mvc – 为Azure Web角色定义缩放阈值
- asp.net-mvc-3 – ASP.NET Webforms中的成员资格提供程序与
- asp.net-mvc-3 – MVC视图的命名空间问题 – Razor引擎
- asp.net – GetHashCode在这里只是货物崇拜吗?
- asp.net-mvc – 如何忽略ASP.NET MVC 4中特定View文件夹或特
- ASP.NET GridView利用PagerTemplate自定义分页
- asp.net – Internet Explorer 8 – 据报道该网站不安全
- asp.net-mvc – 在asp.net mvc中存储和检索用户的
- 如何在asp.net中更改javascript警告框的标题?
- 从Asp:Menu运行每个MenuItem的javascript函数
- asp.net-mvc-3 – 为MVC3应用程序配置Ninject的正
- asp.net-mvc – 不应加载引用程序集以执行
- asp.net – Transfer-Encoding:Chunked cause 4
- asp.net-mvc-3 – 编码为utf 8的MVC 3 Razor页面
- 在ASP.NET MVC中的jQuery与MicrosoftAjax
- asp.net – 如何在aspx.cs页面中访问对象标签?
- 防止在Asp.Net Core ViewComponents中加载多个Ja