Промежуточное ПО в ядре .net не работает, что позволяет мне войти в него - PullRequest
0 голосов
/ 06 февраля 2019

Я осознавал, что мне нужно написать некоторое промежуточное программное обеспечение для httpcontext и т. Д., Но, таким образом, я попытался взять даже пример от Microsoft, и проблема в том, что даже с точками останова снаружи ... app.Use и app.Run, с F11 он не войдет в код.

Как я могу даже войти в этот код, чтобы увидеть значения?

файл startup.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}");
    });

}

1 Ответ

0 голосов
/ 06 февраля 2019

В конвейере обработки запросов 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?}");
});

Надеюсь, это решит вашу проблему.

...