HttpContext
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[ASP.NET Core Web]]
&color(red){※This article is based on .NET 7};
#contents
* 概要 [#t17da002]
ASP.NET Core应用开发中使用频率最高的对象。要说明HttpConte...
对于由一个服务器和多个中间件构建的管道来说,面向传输层的...
对于某个中间件来说,当我们完成了自身的请求处理任务之后,...
当服务器接收到请求之后,会创建一个通过HttpContext表示的上...
* 举例 [#redf85ec]
我们知道一个HTTP事务(Transaction)具有非常清晰的界定,即...
我们可以将请求理解为输入、响应理解为输出,所以应用程序可...
#codeprettify{{
public class HttpContext
{
public HttpRequest Request { get; }
public HttpResponse Response { get; }
}
public class HttpRequest
{
public Uri Url { get; }
public NameValueCollection Headers { get; }
public Stream Body { get; }
}
public class HttpResponse
{
public NameValueCollection Headers { get; }
public Stream Body { get; }
public int StatusCode { get; set;}
}
}}
如上面的代码片段所示,HttpContext通过它的两个属性Request...
* 调用HttpContext [#jeacfe70]
在 ASP.NET Core 中要想得到 cookie 必须要有 Request 对象,...
ASP.NET Core 中就内置了一个实现了该接口的 HttpContextAcce...
#codeprettify{{
命名空间:Microsoft.AspNetCore.Http
程序集:Microsoft.AspNetCore.Http.Abstractions.dll
包:Microsoft.AspNetCore.App.Ref v7.0.5
public interface IHttpContextAccessor
{
HttpContext HttpContext { get; set; }
}
}}
** 内置标准方法 [#g6a0f201]
*** 依赖注入 [#e5df9b70]
#codeprettify{{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
//IHttpContextAccessor register
services.AddHttpContextAccessor();
services.AddTransient<IUserService, UserService>();
}
}}
*** 使用 [#s31e91fc]
将 IHttpContextAccessor 注入到创建的服务构造函数中,并访...
#codeprettify{{
namespace Get_HttpContext_ASP.NET_Core
{
using Microsoft.AspNetCore.Http;
public class UserService : IUserService
{
private readonly IHttpContextAccessor _httpContex...
public UserService(IHttpContextAccessor httpConte...
{
_httpContextAccessor = httpContextAccessor;
}
public string GetLoginUserName()
{
return _httpContextAccessor.HttpContext.User....
}
}
}
}}
https://www.telerik.com/blogs/how-to-get-httpcontext-asp...
** 进阶方法 [#k9f6840f]
不直接使用父类 Controller 的 Request 和 HttpContext,这是...
*** 依赖注入 [#p3c9741a]
自定义一个Accessor
#codeprettify{{
public class HttpContextAccessor : IHttpContextAccessor
{
public HttpContextAccessor();
public HttpContext HttpContext { get; set; }
}
}}
为了实现依赖注入,需要将 IHttpContextAccessor 和 HttpCont...
#codeprettify{{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor,HttpContextAc...
// 逻辑代码
}
}}
如果提示下面的报错,也是因为HttpContextAccessor没有注入导...
Microsoft.AspNetCore.Authorization.Policy.PolicyEvaluato...
*** 写入 [#ceb1e433]
然后就可以通过依赖注入的方式获取 IHttpContextAccessor 接...
#codeprettify{{
public class HomeController : Controller
{
private readonly IHttpContextAccessor _httpContextAcc...
public HomeController(IHttpContextAccessor httpContex...
{
this._httpContextAccessor = httpContextAccessor;
}
//写入Cookie
public IActionResult Write(string key, string value, ...
{
CookieOptions options = new CookieOptions();
if (isPersistent)
options.Expires = DateTime.Now.AddDays(1);
else
options.Expires = DateTime.Now.AddSeconds(10);
_httpContextAccessor.HttpContext.Response.Cookies.Ap...
return View("WriteCookie");
}
}
}}
*** 读取 [#cac81576]
#codeprettify{{
public IActionResult Read(string key)
{
ViewBag.Data = _httpContextAccessor.HttpContext.Request....
return View("ReadCookie");
}
}}
#hr();
コメント:
#comment_kcaptcha
終了行:
[[ASP.NET Core Web]]
&color(red){※This article is based on .NET 7};
#contents
* 概要 [#t17da002]
ASP.NET Core应用开发中使用频率最高的对象。要说明HttpConte...
对于由一个服务器和多个中间件构建的管道来说,面向传输层的...
对于某个中间件来说,当我们完成了自身的请求处理任务之后,...
当服务器接收到请求之后,会创建一个通过HttpContext表示的上...
* 举例 [#redf85ec]
我们知道一个HTTP事务(Transaction)具有非常清晰的界定,即...
我们可以将请求理解为输入、响应理解为输出,所以应用程序可...
#codeprettify{{
public class HttpContext
{
public HttpRequest Request { get; }
public HttpResponse Response { get; }
}
public class HttpRequest
{
public Uri Url { get; }
public NameValueCollection Headers { get; }
public Stream Body { get; }
}
public class HttpResponse
{
public NameValueCollection Headers { get; }
public Stream Body { get; }
public int StatusCode { get; set;}
}
}}
如上面的代码片段所示,HttpContext通过它的两个属性Request...
* 调用HttpContext [#jeacfe70]
在 ASP.NET Core 中要想得到 cookie 必须要有 Request 对象,...
ASP.NET Core 中就内置了一个实现了该接口的 HttpContextAcce...
#codeprettify{{
命名空间:Microsoft.AspNetCore.Http
程序集:Microsoft.AspNetCore.Http.Abstractions.dll
包:Microsoft.AspNetCore.App.Ref v7.0.5
public interface IHttpContextAccessor
{
HttpContext HttpContext { get; set; }
}
}}
** 内置标准方法 [#g6a0f201]
*** 依赖注入 [#e5df9b70]
#codeprettify{{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
//IHttpContextAccessor register
services.AddHttpContextAccessor();
services.AddTransient<IUserService, UserService>();
}
}}
*** 使用 [#s31e91fc]
将 IHttpContextAccessor 注入到创建的服务构造函数中,并访...
#codeprettify{{
namespace Get_HttpContext_ASP.NET_Core
{
using Microsoft.AspNetCore.Http;
public class UserService : IUserService
{
private readonly IHttpContextAccessor _httpContex...
public UserService(IHttpContextAccessor httpConte...
{
_httpContextAccessor = httpContextAccessor;
}
public string GetLoginUserName()
{
return _httpContextAccessor.HttpContext.User....
}
}
}
}}
https://www.telerik.com/blogs/how-to-get-httpcontext-asp...
** 进阶方法 [#k9f6840f]
不直接使用父类 Controller 的 Request 和 HttpContext,这是...
*** 依赖注入 [#p3c9741a]
自定义一个Accessor
#codeprettify{{
public class HttpContextAccessor : IHttpContextAccessor
{
public HttpContextAccessor();
public HttpContext HttpContext { get; set; }
}
}}
为了实现依赖注入,需要将 IHttpContextAccessor 和 HttpCont...
#codeprettify{{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor,HttpContextAc...
// 逻辑代码
}
}}
如果提示下面的报错,也是因为HttpContextAccessor没有注入导...
Microsoft.AspNetCore.Authorization.Policy.PolicyEvaluato...
*** 写入 [#ceb1e433]
然后就可以通过依赖注入的方式获取 IHttpContextAccessor 接...
#codeprettify{{
public class HomeController : Controller
{
private readonly IHttpContextAccessor _httpContextAcc...
public HomeController(IHttpContextAccessor httpContex...
{
this._httpContextAccessor = httpContextAccessor;
}
//写入Cookie
public IActionResult Write(string key, string value, ...
{
CookieOptions options = new CookieOptions();
if (isPersistent)
options.Expires = DateTime.Now.AddDays(1);
else
options.Expires = DateTime.Now.AddSeconds(10);
_httpContextAccessor.HttpContext.Response.Cookies.Ap...
return View("WriteCookie");
}
}
}}
*** 读取 [#cac81576]
#codeprettify{{
public IActionResult Read(string key)
{
ViewBag.Data = _httpContextAccessor.HttpContext.Request....
return View("ReadCookie");
}
}}
#hr();
コメント:
#comment_kcaptcha
ページ名: