Asp.net core 迁移到核心,但仍使用旧的;模块";(HttpApplication)

Asp.net core 迁移到核心,但仍使用旧的;模块";(HttpApplication),asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我在startup中为中间件做了一些工作 这是我的课 公共类AcceptQueryMiddleware { private const string Realm=“基本领域=我的销售系统”; private readonly RequestDelegate\u next; 私有静态只读IDictionary FormatAcceptMap=新字典(); 公共AcceptQueryMiddleware(RequestDelegate下一步) { _下一个=下一个; } public void Ac

我在startup中为中间件做了一些工作

这是我的课

公共类AcceptQueryMiddleware
{
private const string Realm=“基本领域=我的销售系统”;
private readonly RequestDelegate\u next;
私有静态只读IDictionary FormatAcceptMap=新字典();
公共AcceptQueryMiddleware(RequestDelegate下一步)
{
_下一个=下一个;
}
public void AcceptQueryHttpModule()
{
RegisterPerformataAcceptQuery(“csv”、“文本/csv”);
RegisterPerformataAcceptQuery(“excel”、“application/vnd.ms excel”);
RegisterPerformataAcceptQuery(“导航”、“应用程序/导航”);
}
私有静态void RegisterPerformataAcceptQuery(字符串格式,字符串acceptHeader)
{
var regex=new regex(@“([?]|[&])format=“+format);
FormatAcceptMap.Add(regex,acceptHeader);
}
Application BeginRequest上的私有静态无效(对象发送方,EventArgs EventArgs)
{
var app=发送方作为HttpApplication;
如果(app==null){return;}
var url=app.Request.RawUrl;
foreach(FormatAcceptMap中的var格式)
{
if(format.Key.Match(url.Success)
{
app.Request.Headers[“Accept”]=format.Value;
打破
}
}
}
公共空间处置()
{
}
}
如何将其转换为核心?绕道而行? 特别是.NET核心不支持的
HttpApplication


或者你有我可以遵循的链接或提示吗?

你想将HTTP模块迁移到中间件。请参阅以了解如何操作

在您的情况下,您正在使用
HttpApplication
访问与请求相关的数据。您将获得原始URL并添加一些标题。这是您可以在中间件中执行的操作。下面是一个例子:

公共类AcceptQueryMiddleware
{
private readonly RequestDelegate\u next;
公共AcceptQueryMiddleware(RequestDelegate下一步)
{
_下一个=下一个;
}
公共异步任务调用(HttpContext上下文)
{
//在这里做“之前”的事情(使用HttpContext)
wait_next.Invoke(上下文);
//在这里做你的“事后”工作
}
}

并调用
app.useMediddleware()
在您的
启动
类中(在
配置
方法中)。

我以前已经这样做过,但不知何故,我使我的类与这个中间件有所不同。。我会回到以前的样子!谢谢