c# - 如何在 .Net Core 中迁移 HttpResponse 和 HttpRequest
问题描述
我正在将我的 .net 框架应用程序迁移到 .net 核心。我在迁移 HttpResponse 时遇到了一些麻烦。我的类基本上包装了对象。
例如
public class HttpResponseWrapper
{
private readonly HttpResponse _response;
public bool Buffer { get { return _response.Buffer; } set { _response.Buffer = value; } }
public bool BufferOutput { get { return _response.BufferOutput; } set { _response.BufferOutput = value; } }
public void AddCacheDependency(params CacheDependency[] dependencies)
{
_response.AddCacheDependency(dependencies);
}
}
不幸的是 HttpResponse 是未定义的。我也在为 HttpRequest 做同样的事情。
我尝试添加Microsoft.AspNetCore.Http.
,但一切都中断了。在任何使用响应的地方,它都会说它不包含Buffer/Bufferoutput/etc.
任何指导或帮助将不胜感激。
解决方案
您在控制器类和操作过滤器中处理请求和响应。当然,您可以稍后将这些对象传递给其他方法。
你的
Controller
类应该继承自Controller
类,类继承自ControllerBase
类。ControllerBase
类具有Request
和Response
属性(https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.controllerbase?view=aspnetcore-5.0)。在动作过滤器中,上下文对象被传递给构造函数或可覆盖的方法。查看https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.filters.authorizationfiltercontext?view=aspnetcore-5.0以获取示例。在这种情况下,您可以使用
context.HttpContext.Request
andcontext.HttpContext.Response
。
推荐阅读
- pointers - 创建一个变量会创建一个副本,而取消引用则不会。为什么?
- java - 从 ibm-mq 读取复制的消息
- events - 如何在 Vue 组件中使用相同的方法定位不同的 v-on:click 事件(显示/隐藏不同的元素)
- python - 向 pyspark 数据框添加行索引(并排添加新列/连接数据框)
- html - 如何使用 flexbox 使父 div 的宽度适合子项目的宽度?
- javascript - 使用 Google 协议缓冲区在 C++ 和 JavaScript 端点之间序列化/反序列化数据?
- python - 如何在python中创建一个高效快速的评分系统?
- python - 如何通过快捷方式找到文件的路径?
- google-apps-script - 有没有办法在 Google App Scripts 中调用 getAlias 名称?
- go - Golang for select 循环消耗 100% 的 cpu