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

前端之家收集整理的这篇文章主要介绍了.net – HttpContext.Request和Request之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
三个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应该工作,假设上下文已经与线程相关联了.

原文链接:https://www.f2er.com/aspnet/250895.html

猜你在找的asp.Net相关文章