问题描述
仅当我通过浏览器访问请求时,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 (将#修改为@)