如何解决通过浏览器访问的请求与通过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 举报,一经查实,本站将立刻删除。