如何解决在 HttpModule 中访问 POST 请求上的会话ASP.NET WebForms
我正在开发一个无 cookie 的 ASP.NET WebForms 应用程序,它需要接收 POST 请求并将请求正文存储到 Session 变量中。请求被发布到一个 ASPX 页面,我可以用 Postman 模拟。出于某种原因,我无法在页面背后的代码中处理这个问题。
为了检索请求正文,我在 HttpModule 的 Application_EndRequest 处理程序中放入了一些代码,它可以正常工作:
public sealed class MyModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.EndRequest += new EventHandler(Application_EndRequest);
}
private void Application_EndRequest(Object source,EventArgs e)
{
var req = HttpContext.Current.Request;
if (req.UrlReferrer == null &&
req.Url.ToString() == MyEndPoint &&
req.RequestType.ToUpper() == "POST")
{
using (var reader = new StreamReader(req.InputStream,Encoding.UTF8,true,1024,true))
{
//here I get the body of the POST request
var requestBody = reader.ReadToEnd();
//but HttpContext.Current.Session is null
}
}
}
public void Dispose() {}
}
但是,当使用 HttpContext.Current.Session
时,会话在该阶段不可用。有什么办法可以访问吗?
我发现有些人改用 PostRequestHandlerExecute
事件。但是,此处理程序似乎并未命中 POST 请求,而是命中 POST 请求正文不再可用的后续 GET 请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。