0

在这个 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。真是莫名其妙

4

0 回答 0