更新
我正在实现一个自定义页面缓存解决方案,如果它是响应表单提交或某种asp.net回发,我不希望缓存或从缓存中检索请求.
我想弄清楚当前的HttpRequest是否是一个回发.有没有办法在页面或其他用户控件的上下文之外执行此操作?换句话说,如果我在一个HttpModule里面,我没有访问权,this.IsPostBack但我仍然需要确定它是否实际上是一个回发.
回帖总是"发布"请求还是由包含表单决定?
谢谢!
检查的Method属性HttpWebRequest.回发应标记为POST中Method.
此外,你在老派asp中的方式是检查HTTP消息正文中的预期回发参数(Request.Form).您可以检查请求的内容,看起来像回发参数.我不确定你正在使用什么对象,但如果它是一个HttpWebRequest,你可以从GetResponseStream()对象的方法检查请求流.
if (Request.ServerVariables["REQUEST_METHOD"] == "POST") {
// This is a POST
}
Run Code Online (Sandbox Code Playgroud)
以下静态例程应该能够确定当前请求是否是回发.但是,它仅在您执行ASPX页面或其派生时才有效.
public class PostBackUtility
{
public static Boolean IsPagePostBack
{
get
{
Page pageHandler = HttpContext.Current.CurrentHandler as Page;
if (pageHandler == null) return false;
return pageHandler.IsPostBack;
}
}
}
Run Code Online (Sandbox Code Playgroud)
还应注意,CurrentHandler可能尚未初始化,具体取决于您尝试评估的请求生命周期中的哪个阶段IsPagePostBack.我相信这种方法只会在HttpApplication.PostMapRequestHandler和之间有效HttpApplication.ReleaseRequestState.
| 归档时间: |
|
| 查看次数: |
6361 次 |
| 最近记录: |