在我的Blazor服务器应用程序中,我在一个组件中有这个代码,需要从Request
读取cookie(所以我会在渲染之前读取它们):
[Inject] private IHttpContextAccessor HttpCxAccessor { get; set; }
...
protected override void OnInitialized()
{
var context = HttpCxAccessor.HttpContext;
// context is null when on Local IIS
代码工作时,我运行它从VS (IISExpress),但当我发布它在本地IIS,HttpContext
是null
您不应该在Blazor服务器中使用HttpContextAccessor,因为Blazor服务器在。net core管道之外工作,基本上无法保证您将能够访问所需的HttpContext
数量,以获取更多信息,您可以参考此问题。然而,如果你必须使用HttpContext
,那么你必须在渲染_Host.cshtml
时从HttpContext
中获得所需的值,并将其保存在一个变量中,并在程序其余部分的组件中以级联参数的形式使用该变量。
这里有一个实现的例子。