.net core 中的中间件不工作,让我介入一下

6 asp.net middleware asp.net-core-mvc asp.net-core asp.net-core-middleware

我意识到我需要为 httpcontext 等编写一些中间件,但因此我尝试从 Microsoft 获取一个示例,问题是即使在外部有断点...app.Use并且app.Run ,使用 F11 它也不会执行进入代码。

我怎样才能进入这段代码来查看这些值?

启动.cs文件

public void Configure(IApplicationBuilder app)
{

    var request = new Request("api/menu/create", Method.POST);
    request.AddParameter("currentApplicationId", 1, ParameterType.QueryString);


    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();
    // UPDATE :  Code above prevented from being able to step into below?  

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });

    app.Use((context, next) =>
    {
        var cultureQuery = context.Request.Query["culture"];
        if (!string.IsNullOrWhiteSpace(cultureQuery))
        {
            var culture = new CultureInfo(cultureQuery);
            CultureInfo.CurrentCulture = culture;
            CultureInfo.CurrentUICulture = culture;
        }

        // Call the next delegate/middleware in the pipeline
        return next();
    });

    app.Run(async (context) =>
    {
        await context.Response.WriteAsync(
        $"Hello {CultureInfo.CurrentCulture.DisplayName}");
    });

}
Run Code Online (Sandbox Code Playgroud)

Tan*_*jel 6

在 ASP.NET Core 中,请求处理管道app.UseMvc()应该是最后一个Middleware,如下所示,否则下一个中间件将无法调用。

app.Use((context, next) =>
{
    var cultureQuery = context.Request.Query["culture"];
    if (!string.IsNullOrWhiteSpace(cultureQuery))
    {
        var culture = new CultureInfo(cultureQuery);
        CultureInfo.CurrentCulture = culture;
        CultureInfo.CurrentUICulture = culture;
    }

    // Call the next delegate/middleware in the pipeline
    return next();
});

app.Run(async (context) =>
{
    await context.Response.WriteAsync(
    $"Hello {CultureInfo.CurrentCulture.DisplayName}");
});

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)

希望它能解决您的问题。