在这个 ViewComponent 中,我正在注入 IHttpContextAccessor,但是当 session 属性存在时,ctx.HttpContext.Request.Path 会产生一个空字符串。有谁知道为什么?
public class TopNavViewComponent : ViewComponent {
private IHttpContextAccessor _ctx;
public TopNavViewComponent(IHttpContextAccessor ctx) {
_ctx = ctx;
}
public async Task<IViewComponentResult> InvokeAsync(AdminVisit m_visit, bool IsTop) {
NavObj navs = NavHelper.GetNav(_ctx.HttpContext.Request.Path, m_visit);
navs.Path = _ctx.HttpContext.Request.Path;
navs.IsTop = IsTop;
navs.Path += _ctx.HttpContext.Session.Id;
return View(navs);
}
}
顺便说一句,我没有在 ConfigureServices 中忘记这一点
services.AddHttpContextAccessor();
ViewComponent 位于 Razor 类库中 - 代码与缺少的 Request.Path 值不同。
我在同一个库的 Razor PageModel 类中也没有 Request.Path 值:
public class AuthPageModel : PageModel {
[ViewData]
public AdminVisit Visit { get; }
[ViewData]
public string ReqPath { get; }
public AuthPageModel(IDBResolverService dbresolver, IHttpContextAccessor ctx) {
Visit = new AdminVisit();
ReqPath = "Are you here? " + ctx.HttpContext.Request.Path;
if (ctx.HttpContext.User != null) {
ctx.HttpContext.User 很好,但同样没有 Request.Path。真是莫名其妙