标签: httpcontext

在哪里使用Controller.HttpContext

在我的基本控制器的构造函数中,我调用一个扩展方法来检查客户端上的特定cookie.

目前我正在使用System.Web.HttpContext.Current来获取当前上下文.

但是,我认为我应该使用Controller.HttpContext,因为它更可测试并包含有关请求的其他信息.

但是,Controller.HttpContext在创建时返回null(相信这是设计),而且还在Initialize和Execute方法上返回null(除非我使用Routing.RequestContext.HttpContext?).

所以,如果我应该使用Controller.HttpContext而不是HttpContext.Current,请求在什么时候可以使用它?

谢谢Ben

asp.net-mvc httpcontext

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

HttpModule用于加密查询字符串

我发现这个伟大的小HttpModule加密和解密所有的查询字符串.它可以在这里找到:HttpModule用于查询字符串加密

有一个主要的缺陷,我真的可以使用一些如何解决的输入.在页面的回发中,跳过HttpMethod POST并且QueryString被解密显示.显然这是一个重大的安全风险.

void context_BeginRequest(object sender, EventArgs e)
{
    try
    {
        HttpContext context = HttpContext.Current;
        if (context.Request.Url.OriginalString.Contains("aspx") && context.Request.RawUrl.Contains("?"))
        {
            string query = ExtractQuery(context.Request.RawUrl);
            string path = GetVirtualPath();

            if (query.StartsWith(PARAMETER_NAME, StringComparison.OrdinalIgnoreCase))
            {
                // Decrypts the query string and rewrites the path.
                string rawQuery = query.Replace(PARAMETER_NAME, string.Empty);
                string decryptedQuery = Decrypt(rawQuery);
                context.RewritePath(path, string.Empty, decryptedQuery);
            }
            else if (context.Request.HttpMethod == "GET")
            {
                // Encrypt the query string and redirects to the encrypted URL.
                // Remove if you don't want all query …
Run Code Online (Sandbox Code Playgroud)

c# httpmodule httpcontext

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

AndroidHttpClient和Cookies

使用带有cookie的AndroidHttpClient给我混合200 ok和403禁止响应.我不确定我做错了什么.

我以下列方式使用AndroidHttpClient:

我有几个后台线程类,每个类都执行以下操作:

HttpGet get...
HttpClient client = AndroidHttpClient.newInstance("Android");
HttpContext http_context = HttpSupport.getHttpContextInstance(); 
CookieStore cookie_store = HttpSupport.getCookieStoreInstance();
http_context.setAttribute(ClientContext.COOKIE_STORE, cookie_store);
client.execute(
Run Code Online (Sandbox Code Playgroud)

HttpSupport是一个包含两个静态字段的类; 一个CookieStore和一个HttpContext:

public class HttpSupport {

private static HttpContext _context;
private static CookieStore _cookieStore;

public static synchronized HttpContext getHttpContextInstance() {
    if (_context == null) {
        _context = new BasicHttpContext();
    }
    return _context;
}

public static synchronized CookieStore getCookieStoreInstance() {
    if (_cookieStore == null) {
        _cookieStore = new BasicCookieStore();
    }
    return _cookieStore;
}

}
Run Code Online (Sandbox Code Playgroud)

在应用程序中有多个AndroidHttpClient实例可以吗?我是否正确存储了cookie?

cookies android httpclient httpcontext

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

通过静态类访问 HttpContext 可以“正确”处理不同的请求

我在尝试解决需要非控制器中的一些标头的问题时发现了这篇文章
我对这种方法持怀疑态度,作者没有回应。我主要关心的是使用 global static 的方法HttpContext。我在想它不应该处理两个请求。这种情况的一个例子如下(连同我提到的文章中介绍的方法):

public static class AppContext
{
    public static IHttpContextAccessor HttpContextAccessor { get; set; }
    public static void Configure(IHttpContextAccessor accessor)
    {
        HttpContextAccessor = accessor;
    }
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
    IHttpContextAccessor contextAccessor)
{
    AppContext.Configure(contextAccessor);
    ...
}

[Route("api/[controller]")]
[ApiController]
public class ExampleController : ControllerBase
{
    [HttpGet("{number}")]
    public IActionResult Example(int number)
    {
        if (number == 1)
        {
            Thread.Sleep(10000);
        }

        var result = AppContext.HttpContextAccessor.HttpContext.Request.GetDisplayUrl();

        return Ok(result + " " + number);
    } …
Run Code Online (Sandbox Code Playgroud)

c# httpcontext static-classes asp.net-core

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

HttpContext 在后台线程中丢失

我有一个异步方法,它使用 HttpContext.Current,它由另一个在后台运行的代码使用,例如

var result = Task.Run(async () => await SomeMethod()).Result;
Run Code Online (Sandbox Code Playgroud)

HttpContext.Current 始终为 null。有没有办法将 HttpContext 传递给后台任务?

c# asp.net httpcontext task-parallel-library async-await

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