标签: httpcontext

如何通过请求 - 响应维护HttpContext

我想知道如何维护HttpContext,因为Web的请求 - 响应性质基本上是无状态的.

是否将HttpContext对象的标识符作为__EVENTTarget/__EVENTARGUMENTS隐藏字段的一部分发送,以便HttpRuntime类可以通过从请求(HttpWorkerRequest)中读取此部分来创建HttpContext类?我不认为

请让我知道,因为我试图填补我对http管道的理解,我无法找到任何有关此信息的信息.

我理解像HttpContext.Current.Session ["myKey"] = Value;

只是工作,但如果我不得不用不同的语言(比如perl)做类似的事情,我将不得不使用相同的隐藏字段,不是吗?

谢谢-Venu

asp.net httpcontext

1
推荐指数
1
解决办法
3711
查看次数

Castle.Windsor和HttpContextWrapper

引入HttpContextWrapper和HttpContextBase,如此处所述,使HttpContext更具可模拟性/可测试性.

我正在尝试将它与S#arp架构一起使用,并遇到一些问题.

我的MVC控制器被设置为在构造函数中接受HttpContextBase参数,并且在Application_Start期间,HttpContextBase在Castle.Windor中注册,如下所示:

container.Register(Component.For<HttpContextBase>().UsingFactoryMethod(
    () => new HttpContextWrapper(HttpContext.Current)));
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但后来我意识到Castle只运行一次Factory方法,所以所有请求都获得了原始的HttpContextWrapper.真的需要为每个请求重新创建它.Castle.Windsor命令将是:

container.Register(Component.For<HttpContextBase().
    LifeStyle.PerWebRequest.UsingFactoryMethod(
    () => new HttpContextWrapper(HttpContext.Current)));
Run Code Online (Sandbox Code Playgroud)

...但事实证明,Castle.Windsor不允许在Application_Start中使用LifeStyle.PerWebRequest(如此处所述)

我该怎么办?有没有一个简单的方法围绕这个或我应该放弃HttpContextWrapper并注入我自己的工厂,以根据需要制作新的工厂?

asp.net-mvc castle-windsor httpcontext s#arp-architecture

1
推荐指数
1
解决办法
1503
查看次数

Sitecore.Context.Item是否使用HttpContext?

Sitecore是否使用HttpContext来保存对DB的不必要的调用?

特别是对于上下文项和数据库?

谢谢

c# sitecore httpcontext sitecore6

1
推荐指数
1
解决办法
1365
查看次数

检查会话变量(null或不是)会导致Handler类中出现异常

我有一个类似于此线程中描述的情况:
如何在c#中的静态方法中获取会话变量的值?

但是,这里没有静态方法(只是一个继承自IHttpHandler的类)

这是我的代码:

<%@ WebHandler Language="C#" Class="Telerik.Web.Examples.FileExplorer.FilterAndDownloadFiles.Handler" %>

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Text;
using Telerik.Web.UI;

namespace Telerik.Web.Examples.FileExplorer.FilterAndDownloadFiles
{
    [RadCompressionSettings(HttpCompression = CompressionType.None)] // Disable RadCompression for this page ;
    public class Handler : IHttpHandler
    {
        #region IHttpHandler Members

        private HttpContext _context;
        private HttpContext Context
        {
            get
            {
                return _context;
            }
            set
            {
                _context = value;
            }
        }

        public void ProcessRequest(HttpContext context)
        {
            Context = context;
            string filePath = context.Request.QueryString["path"];
            filePath = context.Server.MapPath(filePath);

            if (filePath == …
Run Code Online (Sandbox Code Playgroud)

c# asp.net session httpcontext ihttphandler

1
推荐指数
1
解决办法
2015
查看次数

Application_AcquireRequestState()多次触发

我在mvc3应用程序中使用以下方法:

protected void Application_AcquireRequestState(object sender, EventArgs e)
        {
          if (HttpContext.Current.Session != null)
            {
                CultureInfo ci = (CultureInfo)this.Session["Culture"];

                if (ci == null)
                {
                    string langName = "az";
                    ci = new CultureInfo(langName);
                    this.Session["Culture"] = ci;
                }

                Thread.CurrentThread.CurrentUICulture = ci;
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);
            }
        }
Run Code Online (Sandbox Code Playgroud)

为什么这种方法被多次调用?

当站点在其他PC的新浏览器中打开时,找不到站点资源.

globalization session cultureinfo httpcontext asp.net-mvc-3

1
推荐指数
1
解决办法
5258
查看次数

HttpContext.Current在等待调用后在异步中为null

HttpContext.Current在等待调用后在异步中为null。

这是我的代码:

if (!string.IsNullOrEmpty(securityGroupName))
{
    // To remove the domain name from the security group name.
    string securityGroupDisplayName = securityGroupName.Split('\\')[1];
    string serviceSecurityGroupId = await this.graphApiClient.GetGroupIdAsync(securityGroupDisplayName).ConfigureAwait(false);

    if (!string.IsNullOrEmpty(serviceSecurityGroupId))
    {
        Task securityGroupRoleAddTask = this.CheckMembershipAndAddRole(serviceSecurityGroupId, userId, securityGroupName);
        Task flightAdminRoleAddTask = this.CheckMembershipAndAddRole(FlightAdminSecurityGroupId, userId, FlightAdminRoleName);
        Task.WaitAll(securityGroupRoleAddTask, flightAdminRoleAddTask);
    }
    else
    {
        LoggingUtilities.Logger.TraceInformation("Azure AD id does not exist for the security group: {0}.", securityGroupName);
        await this.CheckMembershipAndAddRole(FlightAdminSecurityGroupId, userId, FlightAdminRoleName).ConfigureAwait(false);
    }
}
else
{
    LoggingUtilities.Logger.TraceInformation("Security group name is not valid, checking for flight admin role for the user: {0}.", …
Run Code Online (Sandbox Code Playgroud)

c# httpcontext async-await asp.net-web-api

1
推荐指数
1
解决办法
2992
查看次数

存储可在服务器请求中访问的对象?

我正在开发一个 ASP.NET MVC 项目,我想延迟加载一个数据库 DataContext 对象,该对象Class在服务器请求中跨 es 使用(也就是说,它仅通过请求存在,并且对于每个请求,我都有一个独特的对象)。

HttpContext.Current目前我可以使用或获取请求HttpContext.Current.Request,但请求仅存储字符串值。

是否有类似Session对象的东西,但仅用于请求?像 ViewBag 或 ViewData 这样的东西,但可以从HttpContext对象访问?

编辑:这是我想要实现的目标:我有一个AccountBusiness类,可能会在请求中多次实例化。它具有LoggedInUser延迟加载的属性(注意:这不是 ASP.NET Identity 的 AspNetUser 对象)。通常我会做这样的事情:

    private UserProfile loggedInProfile;
    public UserProfile LoggedInProfile
    {
        get
        {
            if (this.loggedInProfile == null)
            {
                var userId = HttpContext.Current.User.Identity.GetUserId();
                this.loggedInProfile = this.Context.UserProfiles.FirstOrDefault(q => q.ID == userId);
            }

            return this.loggedInProfile;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然而,正如我之前所说,这个属性可能会在一个请求中多次实例化,它会多次访问数据库以获取同一个 UserProfile 对象。这只是一个例子,我有更多与此类似的对象,并且想进行更改,以便它只访问数据库一次,然后保存它以供当前请求使用,如下所示:

    public UserProfile LoggedInProfile
    {
        get
        {
            if (this.loggedInProfile == null)
            {
                var dataTokens = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc httpcontext asp.net-mvc-5.2

1
推荐指数
1
解决办法
1401
查看次数

在控制器外部使用HttpContext

public class UserAccount
{
  private readonly IHttpContextAccessor _httpContextAccessor;

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

  //Sign in
  public static async Task SignIn(dynamic user)
  {
    var claims = new[]
    {
      new Claim("UserID", user.ID.ToString()),
      new Claim(ClaimTypes.Role, "Baller")
    };

    var principal = new ClaimsPrincipal(
          new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme));

    await _httpContextAccessor.HttpContext.Authentication.SignInAsync("Cookies", principal);
  }
}
Run Code Online (Sandbox Code Playgroud)

我从SignIn方法的await语句中收到此错误: 非静态字段,方法或属性“ UserAccount._httpContextAccessor”需要对象引用

如果我未将方法声明为静态,则错误消失,但是如果方法ISN未声明为静态,则无法从我的控制器访问UserAccount.SignIn方法。

如果我这样声明变量_httpContextAccessor

private static IHttpContextAccessor
Run Code Online (Sandbox Code Playgroud)

而不是:

private readonly IHttpContextAccessor
Run Code Online (Sandbox Code Playgroud)

所有错误都消失了,但是在await语句上又得到了空引用异常。(_httpContextAccessor未设置为对象的实例)

c# httpcontext asp.net-core-mvc

1
推荐指数
1
解决办法
2056
查看次数

在httpcontext asp.net核心上缓存对象

我正在尝试从.net framework MVC 5迁移到.net core 2.0 MVC

好的过去,我可以通过调用获取或设置缓存的对象

HttpContext.Current.Application.Lock();
HttpContext.Current.Application["foo"] = bar;
HttpContext.Current.Application.Lock();
Run Code Online (Sandbox Code Playgroud)

但是我无法将应用程序的这一部分迁移到.net核心。

如何在核心2.0上处理此问题?

c# asp.net asp.net-mvc httpcontext asp.net-core-mvc

1
推荐指数
1
解决办法
1187
查看次数

访问应用服务层的HttpContext

我正在使用 ASP.NET Boilerplate (ASP.NET Core) 为潜在客户创建一个 CRM。

这些线索通过 API(应用服务层,而不是动态 API)推送到系统中。

我曾计划使用请求 URL (from HttpContext) 作为模型中的必填字段对潜在客户源进行快速查找。

我的问题是:在应用程序服务层中获取 post 请求的请求 URL(来源)的最佳方法是什么?

一个例子如下:

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

    public void OnGet()
    {
        Message = HttpContext.Request.PathBase;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# httpcontext asp.net-core aspnetboilerplate abp

1
推荐指数
1
解决办法
1257
查看次数