华域联盟 .Net 在ASP.NET Core5.0中访问HttpContext的方法步骤

在ASP.NET Core5.0中访问HttpContext的方法步骤

在ASP.NET Core5.0中访问HttpContext的方法步骤
 更新时间:2020年11月13日 08:35:22   作者:conan_lin  

这篇文章主要介绍了在ASP.NET Core5.0中访问HttpContext的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

ASP.NET Core 应用通过 IHttpContextAccessor 接口及其默认实现 HttpContextAccessor 访问 HttpContext。 只有在需要访问服务内的 HttpContext 时,才有必要使用 IHttpContextAccessor。
通过 Razor Pages 使用 HttpContext

Razor Pages PageModel 公开 HttpContext 属性:

public class AboutModel : PageModel
{
public string Message { get; set; }

public void OnGet()
{
Message = HttpContext.Request.PathBase;
}
}

通过 Razor 视图使用 HttpContext

Razor 视图通过视图上的 RazorPage.Context 属性直接公开 HttpContext。 下面的示例使用 Windows 身份验证检索 Intranet 应用中的当前用户名:

@{
var username = Context.User.Identity.Name;

...
}

通过控制器使用 HttpContext

控制器公开 ControllerBase.HttpContext 属性:

public class HomeController : Controller
{
public IActionResult About()
{
var pathBase = HttpContext.Request.PathBase;

...

return View();
}
}

通过中间件使用 HttpContext

使用自定义中间件组件时,HttpContext 传递到 Invoke 或 InvokeAsync 方法,在中间件配置后可供访问:

public class MyCustomMiddleware
{
public Task InvokeAsync(HttpContext context)
{
...
}
}

通过自定义组件使用 HttpContext

对于需要访问 HttpContext 的其他框架和自定义组件,建议使用内置的依赖项注入容器来注册依赖项。 依赖项注入容器向任意类提供 IHttpContextAccessor,以供类在自己的构造函数中将它声明为依赖项:

public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddHttpContextAccessor();
services.AddTransient<IUserRepository, UserRepository>();
}

如下示例中:

UserRepository 声明自己对 IHttpContextAccessor 的依赖。
当依赖项注入容器解析依赖链并创建 UserRepository 实例时,就会注入依赖 项。

public class UserRepository : IUserRepository
{
private readonly IHttpContextAccessor _httpContextAccessor;

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

public void LogCurrentUser()
{
var username = _httpContextAccessor.HttpContext.User.Identity.Name;
service.LogAccessRequest(username);
}
}

从后台线程访问 HttpContext

HttpContext 不是线程安全型。 在处理请求之外读取或写入 HttpContext 的属性可能会导致 NullReferenceException。
要使用 HttpContext 数据安全地执行后台工作,请执行以下操作:

在请求处理过程中复制所需的数据。
将复制的数据传递给后台任务。

要避免不安全代码,请勿将 HttpContext 传递给执行后台工作的方法。 而是传递所需要的数据。 在以下示例中,调用 SendEmailCore,开始发送电子邮件。 将 correlationId 传递到 SendEmailCore,而不是 HttpContext。 代码执行不会等待 SendEmailCore 完成:

public class EmailController : Controller
{
public IActionResult SendEmail(string email)
{
var correlationId = HttpContext.Request.Headers["x-correlation-id"].ToString();

_ = SendEmailCore(correlationId);

return View();
}

private async Task SendEmailCore(string correlationId)
{
...
}
}

到此这篇关于在ASP.NET Core5.0中访问HttpContext的方法步骤的文章就介绍到这了,更多相关ASP.NET Core 访问 HttpContext内容请搜索华域联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持华域联盟!

您可能感兴趣的文章:ASP.NET Core扩展库之Http通用扩展库的使用详解ASP.NET Core扩展库之Http日志的使用详解如何在ASP.NET Core中使用HttpClientFactory在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求在ASP.NET Core中应用HttpClient获取数据和内容.NET CORE HttpClient的使用方法ASP.NET Core中的Http缓存使用.net Core 使用IHttpClientFactory请求实现.NET Core使用HttpClient进行表单提交时遇到的问题.Net Core下HTTP请求IHttpClientFactory示例详解如何在 .NET 中使用 Flurl 高效处理Http请求

ASP.NET
Core
访问
HttpContext

相关文章
运行asp.net时出现 http错误404-文件或目录未找到问题描述: http错误404-文件或目录未找到的解决方法 2009-03-03
MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查询条件分页这篇文章主要介绍了MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查询条件分页,需要的朋友可以参考下 2017-05-05
安装.NET Framework进度条卡住不动的解决方案(推荐)VS在安装之前需要安装.NET Framework,我安装的是4.0版本。但是安装进度条到一半左右时就卡住不动了。前前后后重试多次,还有几次重新开机,但都没用,怎么解决呢,下面给大家分享下解决方案 2016-12-12
建立自己的RSS建立自己的RSS... 2006-09-09
C#中的cookie编程简单实例与说明这篇文章介绍了C#中的cookie编程简单实例与说明,有需要的朋友可以参考一下 2013-07-07
Asp.Net URL重写的具体实现这篇文章主要介绍了Asp.Net URL重写的具体实现,有需要的朋友可以参考一下 2014-01-01
ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法IE10中Session丢失问题引起众多业内人士的关注,今天发现在IE10中登录网站时,使用表单验证机制(FormsAuthentication)却无法判断该用户已登入,保存的Session总会丢失,本文将介绍解决方法,感兴趣的朋友可以参考下,或许对你有所帮助 2013-02-02
asp.net无法加载oci.dll等错误的解决方法.net在windows2003下访问oracle9i提示“无法加载oci.dll”或"无法在dll oci.dll中找到名为ocienvcreate的入口点 "的修复方法 2013-10-10
Asp.net中static变量和viewstate的使用方法(谨慎)如在页面中统计某个按钮被按下的次数,先在类中OnClick事件的处理过程前定义一static变量times,则每次调用该按钮的OnClick事件时,令times增1即可,非常方便,接下来详细介绍,感兴趣的朋友可以了解下 2013-01-01
Asp.net实现无刷新调用后台实体类数据并以Json格式返回本文主要分享了Asp.net实现无刷新调用后台实体类数据并以Json格式返回的具体实例方法,具有一定的参考价值,有需要的朋友可以看下 2016-12-12

最新评论

本文由 华域联盟 原创撰写:华域联盟 » 在ASP.NET Core5.0中访问HttpContext的方法步骤

转载请保留出处和原文链接:https://www.cnhackhy.com/5025.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者:

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部