标签: httpcontext

什么是经典 ASP 中 ASP.NET 的 HttpContext.Current.Items 等价物?

HttpContext.Current.Items 是一个具有 HTTP 请求生命周期的存储。

我想知道与此等效的 Classic ASP。

http request httpwebrequest httpcontext asp-classic

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

HttpContext.Current类似于节点中的对象

我决定学习节点的最佳方法是在节点中重新构建我现有的一个c#/ webforms应用程序.

这是一个相当学习的曲线,我注意到我在c#中HttpContext.Current经常使用的一件事是访问类SessionRequest.Url类或静态方法.

节点中有没有这样的东西我错过了?

我已将节点应用程序拆分为可重复使用的"类"(伪代码)

/api/
  - user-manager.js
     - getAllUsers()
Run Code Online (Sandbox Code Playgroud)

然后在我的一个控制器中

var userManager = require('user-manager');
var users = userManager.getAllUsers();
Run Code Online (Sandbox Code Playgroud)

现在,如果我想访问sessionManager或userManager中的url,我必须做这样的事情:

var users = userManager.getAllUsers(req, res);
Run Code Online (Sandbox Code Playgroud)

这不是一个大问题,但我只是好奇,如果有另一种方式,或者如果我构建我的应用程序完全错误,那么了解其他人如何做事情会很有见.

c# httpcontext node.js express

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

IISExpress 是单线程的吗?

我正在编写一个自定义的 .Net 应用程序,该应用程序利用 Claims 来确保安全性,因为我们跨越了许多边界 - Web、API、批处理等等。在开发过程中,有时我会在通过 Chrome 登录时在系统中创建一些东西,然后我将通过 Edge 中的不同帐户测试新创建的项目,并以某种方式HttpContext.Current.User.Identity对应于我的 Chrome 会话。我确实Thread.CurrentPrincipal在幕后设置,但我的理解一直是所有进入 IIS 的请求都会产生一个新线程,所以我无法弄清楚为什么 Edge 请求被处理为好像它们是 Chrome 请求一样。

是否有可能因为 Visual Studio 处于调试模式而共享此信息?

c# asp.net httpcontext claims-based-identity

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

在 ASP.NET Core 中模拟 IHttpConnectionFeature

嗨,我想在 ASP.NET Core 中模拟 IHttpConnectionFeature

在我的控制器中,我有:

var connectionId = HttpContext.Features.Get<IHttpConnectionFeature>().ConnectionId;
Run Code Online (Sandbox Code Playgroud)

但是我如何在我的单元测试中模拟它:

        var controller = new MyController(logger.Object,
            mockService.Object)
        {
            ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext()
            }
        };
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

消息 = "未将对象引用设置为对象的实例。"

c# asp.net unit-testing httpcontext asp.net-core

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

.NET MVC 获取路由模板

假设我有一个带有路由模板的控制器/users/{userId}/profilePhoto

假设一个用户访问/users/123/profilePhoto,另一个用户访问/users/444/profilePhoto

有什么方法可以找到/users/{userId}/profilePhoto用于解决该请求的路由模板 ( ) 吗?例如,是否可以从 中读取它HttpContext

asp.net-mvc routes httpcontext

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

有没有办法像在 Web 表单中一样对 ASP.NET Core 中的对象使用会话?

我有一个 Web 表单项目,我正在尝试将其转换为 ASP.NET Core。我的问题是,在网络表单中,我将一个对象保存到会话中,当我获取它时,我可以对其进行更改并保留它们。另一方面,在核心中,我通过序列化对象将其设置为会话。当我获取它并进行更改时,它不会影响会话中存储的对象。有没有办法按原样保存对象(无需序列化它),以便当我从会话中获取它并对其进行更改时,可以继续使用它而不必再次在会话中设置它?

会议是

 System.Web.HttpContext.Current.Session["object"]
Run Code Online (Sandbox Code Playgroud)

并做到了

AppHttpContext.Current.Session.GetString("object") 
Run Code Online (Sandbox Code Playgroud)

然后我将它反序列化为我想要的对象。

Ps:我使用 AppHttpContext 在控制器外部获取会话

c# session httpcontext asp.net-core

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

是否对在整个 ASP.NET Core 3 应用程序中使用完全相同的 HTTPContextAccessor 实例感到困惑?

我已经阅读了有关配置IHttpContextAccessorservices.AddSingleton范围的内容,但我也阅读了它正在“本地异步”工作,并且我也知道 ASP.Net 中异步的复杂工作,我的意思是例如,如果控制器操作方法是async,并且它await用于async调用,然后它可能会继续另一个线程,但神奇的是一些线程绑定的东西与维护(如HttpContext

我的具体用例:我必须MyConverter向我的 EF Core注入一个类,该类DbContextOnModelCreating. 然而,这个模型由 缓存DbContext,所以任何后续请求,即使它会有一个全新的实例,DbContext也会使用这个非常相同的模型,所以非常相同的MyConverter实例。(即使它已经配置services.AddTransient)。它MyConverter有一个构造函数和一个注入IHttpContextAccessor,因此基于非常相似的原因,它实际上也是所有DbContext/MyConverter用法的单例。

HttpContextAccessor在第一个请求中创建的这个特定实例将为 Web 应用程序生命周期中的所有后续请求提供服务。它会正常工作吗?这里有任何(并发)陷阱吗?

(我是否正确地认为我们使用单个或多个实例并不重要HttpContextAccessor,因为它的获取实现HttpContext将使用正确的方式,包括异步本地线程切换陷阱等以正确的方式返回HttpContext?)

dependency-injection httpcontext asp.net-core

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

初始化 DefaultHttpContext.Response.Body 到 MemoryStream 抛出 NullReferencePointer

我正在研究全局异常中间件的实现,我想用单元测试来覆盖中间件。下面你看看我走了多远。

这是单元测试的代码。

    [Fact]
    public async Task MethodName_StateUnderTest_ExpectedBehavior()
    {
        //Arrange
        IExceptionHandlerFeature exceptionHandlerFeature = new ExceptionHandlerFeature {Error = new NotFoundException()};

        IFeatureCollection features = new FeatureCollection();
        features.Set(exceptionHandlerFeature);

        var context = new DefaultHttpContext(features);
        context.Response.Body = new MemoryStream();
        //Act
        await ExceptionMiddleware.HandleException(context);

        //Assert
        context.Response.StatusCode.Should().Be((int) HttpStatusCode.NotFound);
    }
Run Code Online (Sandbox Code Playgroud)

这是 ExceptionMiddleware.Handle 方法的代码

public static async Task HandleException(HttpContext context)
{
    var contextFeature = context.Features.Get<IExceptionHandlerFeature>();

    if (contextFeature == null)
    {
        return;
    }

    if (contextFeature.Error is AppValidationException validationException)
    {
        context.Response.StatusCode = (int) HttpStatusCode.BadRequest;

        var failures = JsonConvert.SerializeObject(validationException.Failures);

        await context.Response.WriteAsync(
            new ErrorDetails
            { …
Run Code Online (Sandbox Code Playgroud)

unit-testing middleware httpcontext exceptionhandler .net-core

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

如何获取AuthorizationHandler中的Controller和Action?

我只是想知道是否有可能获得and Controller?!为了能够根据请求的操作验证用户的角色,需要它。ActionAuthorizationHandler

我能够得到参考HttpContext。但似乎HttpContext.Request.RouteValues难以接近。

有人有什么想法吗?我的代码:

public class RoleHandler :
    AuthorizationHandler<RoleRequirement>
{
    private readonly IUnitOfWork _context;
    private readonly IHttpContextAccessor _httpContext;

    public RoleHandler(IHttpContextAccessor httpContext, IUnitOfWork context)
    {
        _context = context;
        _httpContext = httpContext;
    }
    protected override Task HandleRequirementAsync(
        AuthorizationHandlerContext authorizationcontext,
        RoleRequirement requirement)
    {
        var roleClaim = authorizationcontext.User.Claims
            .Where(c =>
                 c.Type == ClaimTypes.Role);

        var routeData = authorizationcontext.Resource ;


        if (ThisRoleIsAllowed(roleClaim, requirement.ActionName).Result)
            authorizationcontext.Succeed(requirement);
        return Task.CompletedTask;
    }
Run Code Online (Sandbox Code Playgroud)

c# identity httpcontext .net-core asp.net-core-3.1

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

HTTPS远程发布?

我使用以下代码进行页面设置:http://www.jigar.net/articles/viewhtmlcontent78.aspx,以便从我的HTTPS页面发布到远程HTTPS页面.据我所知,这篇文章是明确发送的.

我误会了吗?如果没有,我该如何保护帖子?

c# ssl httpcontext

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