Как я могу получить доступ к HttpContext в серверной Blazor? - PullRequest
0 голосов
/ 17 декабря 2018

Мне нужен доступ к HttpContext на странице (.cshtml) и, в частности, запрос, а затем файл cookie.Несмотря на доступность, HttpContextAccessor всегда имеет значение null , сохраненное в его свойстве HttpContext.

Любые идеи будут высоко оценены.

Заранее спасибо.

РЕДАКТИРОВАТЬ: версия Blazor, которую я использую: 0.7.0.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Добавьте следующее в Blazor.Web.App.Startup.cs:

services.AddHttpContextAccessor();

Вам также нужно это в <component-name>.cshtml

@using Microsoft.AspNetCore.Http
@inject IHttpContextAccessor httpContextAccessor
0 голосов
/ 17 декабря 2018

blazor.Sever to Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddServerSideBlazor<Client.Startup>();

    // HttpContextAccessor
    services.AddHttpContextAccessor();
    services.AddScoped<HttpContextAccessor>();
}

blazor.Shared

public class HttpContextAccessor
{
   private readonly IHttpContextAccessor _httpContextAccessor;

   public HttpContextAccessor(IHttpContextAccessor httpContextAccessor)
   {
        _httpContextAccessor = httpContextAccessor;
   }

   public HttpContext Context => _httpContextAccessor.HttpContext;
}

blazor.Client to App.cshtml

@inject blazor.Shared.HttpContextAccessor HttpContext
<Router AppAssembly=typeof(Program).Assembly />

@functions 
{      
    protected override void OnInit()
    {
       HttpContext.Context.Request.Cookies.**

       // Or data passed through middleware in blazor.Server
       HttpContext.Context.Features.Get<T>()
    }
}

Кредиты: https://github.com/aspnet/Blazor/issues/1554

...