【问题标题】:OWIN module invocation on each HTTP request每个 HTTP 请求上的 OWIN 模块调用
【发布时间】:2016-12-23 03:08:15
【问题描述】:

我是自定义 OWIN 开发的新手,更不用说用 .NET Core 编写它了。我开始编写一个 OWIN 模块,并且可以将它连接到 Startup 类的 Configure 方法中。它有效,但仅在应用程序第一次启动时执行。我希望在每个 HTTP 请求上调用这个 OWIN 中间件。

这在 .NET Core 中可行吗?似乎在 .NET Framework 4.5 中我们可以使用“StageMarkers”(app.UseStageMarkers)。这似乎不是 .NET Core 中的选项。

这是我在启动时的实现:

app.UseMiddleware<SiteThemerMiddleware>();

这是我的 SiteThemerMiddleware(还没有真正做任何事情):

public class SiteThemerMiddleware
{
    private readonly RequestDelegate _next;

    public SiteThemerMiddleware(RequestDelegate next)
    {
        _next = next;
        //_logger = loggerFactory.CreateLogger<SiteThemerMiddleware>();
    }

    public async Task Invoke(HttpContext context)
    {

        //_logger.LogInformation("Handling request: " + context.Request.Path);
        await _next.Invoke(context);
        //_logger.LogInformation("Finished handling request.");
    }
}

【问题讨论】:

标签: c# .net asp.net-core owin .net-core


【解决方案1】:

ASP.NET Core 的管道类似于但不是直接的 OWIN(有关详细信息,请参阅https://docs.microsoft.com/en-us/aspnet/core/fundamentals/owin)。以前,katana 是 ASP.NET 在包括 System.Web 在内的各种主机之上实现的 OWIN。

这在 .NET Core 中可行吗?似乎在 .NET Framework 4.5 中我们可以使用“StageMarkers”(app.UseStageMarkers)。这似乎不是 .NET CORE 中的一个选项

UseStageMarkers 与在每个请求上运行中间件无关。它是关于在 System.Web 上的 IIS 集成管道内的各个阶段交错中间件。

如果您想对每个请求运行逻辑,那么只需在中间件的 Invoke 方法中编写代码即可。这是根据请求调用的。

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多