为了账号安全,请及时绑定邮箱和手机立即绑定

即使配置后也无法在 Pagemodel 中使用会话

即使配置后也无法在 Pagemodel 中使用会话

C#
慕村9548890 2023-08-20 15:45:18
我正在尝试在我的 asp.net core Web 应用程序中使用 HttpContext.Session 但遇到麻烦。访问会话会导致 InvalidOperationException,并显示消息“尚未为此应用程序或请求配置会话”。我四处搜索,您必须添加一些代码才能启动,即添加会话并使用它。(我还添加了 Nuget 包 AspNetCore.Session)。现在,当我尝试在 PageModel 代码隐藏中访问 Session (HttpContext.Session) 时。它抛出异常并显示上面段落中指定的消息。除了你必须在我已经完成的启动代码中进行设置之外,我找不到更多详细信息。我的启动代码如下:    public void ConfigureServices(IServiceCollection services)    {        services.Configure<CookiePolicyOptions>(options =>        {            // This lambda determines whether user consent for non-essential cookies is needed for a given request.            options.CheckConsentNeeded = context => true;            options.MinimumSameSitePolicy = SameSiteMode.None;        });        services.AddHttpClient();        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);        services.AddDistributedMemoryCache();        services.AddSession();    }    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.    public void Configure(IApplicationBuilder app, IHostingEnvironment env)    {        if (env.IsDevelopment())        {            app.UseDeveloperExceptionPage();        }        else        {            app.UseExceptionHandler("/Error");            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.            app.UseHsts();        }        app.UseHttpsRedirection();        app.UseStaticFiles();        app.UseCookiePolicy();        app.UseSession();        app.UseMvc();    }帖子上的页面模型是我尝试访问它的方式:        public async void OnPostAsync()        {            //Some async stuff here.            //Session throws exception            HttpContext.Session.SetString("something", "something");        }
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您似乎无法访问静态Sessionvia HttpContext,您需要做的是在ConfigurationServices方法 add中,services.AddHttpContextAccessor();这将让您注入IHttpContextAccessor到页面模型构造函数中,这将具有您设置的会话。

确保将 Session 设置为构造函数中的成员变量,因为通过 Post 方法中的 HttpSession 访问它会导致同样的问题。


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信