问题描述
我正在开发一个无 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 (将#修改为@)