通过浏览器访问的请求与通过HttpWebRequest调用的相同请求相比,HttpHandler会话状态的行为有所不同

问题描述

仅当我通过浏览器访问请求时,HTTPHandler中的会话状态才可用;而当通过HttpWebRequest调用调用相同的请求时,则为null。

public class SomethingHttpHandler : IHttpHandler,IReadOnlySessionState
{
    public bool IsReusable => false;

    public string CheckId => HttpContext.Current.Session["Check"]?.ToString();

    public void ProcessRequest(HttpContext context)
    {
        if (context.Request.FilePath.Contains("/docs/"))
        {

            if (string.IsNullOrWhiteSpace(CheckId) || CheckId!= "test")
            {
                var response = context.Response;
                response.Write($"Access Denied");
                response.StatusCode = (int)HttpStatusCode.Forbidden;
                response.End();
                return;
            }
        }

        ...
        do something
        ...


        return;
    }
}

此处理程序在其他网站根目录(称为网站A)中运行,并且使用Redis在进程外处理会话状态。以防万一我已经将进行api调用的网站(网站B)和网站A的机器密钥设置为相同。不确定网站B中的HttpWebRequest调用与GET方法请求完全相同的url时,为什么会话为null当我在网站B中的浏览器中单击相同的链接时。处理程序中的会话将可用并且按预期工作。有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...