加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.net – HttpContext.Request和Request之间的区别

发布时间:2020-12-15 23:48:35 所属栏目:asp.Net 来源:网络整理
导读:三个ASP.NET对象有什么区别? HttpContext.Current.Request HttpContext.Request 请求 这些是完全一样的吗? 编辑1 在global.asax / global.asax.vb和default.aspx / default.aspx.vb中,这些对象的行为不同. 编辑2 好的,我会尝试这个具体的这个时间.我应该使
三个ASP.NET对象有什么区别?

> HttpContext.Current.Request
> HttpContext.Request
>请求

这些是完全一样的吗?

编辑1

在global.asax / global.asax.vb和default.aspx / default.aspx.vb中,这些对象的行为不同.

编辑2

好的,我会尝试这个具体的这个时间.我应该使用以下哪项?

' File: global.asax
Protected Sub Application_BeginRequest(ByVal sender As Object,ByVal e As System.EventArgs)
    If Request.Url.Port = 80 Then
    'If HttpContext.Current.Request.Url.Port = 80 Then
    'If HttpContext.Request.Url.Port = 80 Then
        'do something
    End If
End Sub

' File: default.aspx
Public Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)
    If Request.Url.Port = 80 Then
    'If HttpContext.Current.Request.Url.Port = 80 Then
    'If HttpContext.Request.Url.Port = 80 Then
        'do something
    End If
End Sub

解决方法

好:

> HttpContext.Current是返回线程当前的HttpContext的静态属性
> HttpContext.Request是一个返回HttpRequest的实例属性,用于您调用的HttpContext
> Page.Request是Page的一个实例属性,返回与您调用它的页面相关联的请求(通常是隐式的)

所以HttpContext.Current.Request将使用前两个属性来获取与当前线程关联的请求.如果您处于请求的线程中,那将与正在呈现的相关页面中的Page.Request相同.

但是,如果您的渲染开始不同的线程,则在另一个线程中运行的代码仍然可以通过Page.Request获取请求(因为它只是一个普通属性),但是没有与线程相关联的HttpContext – 所以HttpContext .Current.Request不行.

编辑:要回答编辑的问题,在global.asax中,Request属性是指HttpApplication.Request,可能是最好的方法. HttpContext.Request将不起作用,因为它试图访问静态属性,就像它是一个实例属性一样. HttpContext.Current.Request应该工作,假设上下文已经与线程相关联了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读