.net - HttpContext.Request 和 Request 的区别

标签 .net asp.net

这三个 ASP.NET 对象有什么区别:

  • HttpContext.Current.Request
  • HttpContext.Request
  • 请求

  • 这些完全一样吗?

    编辑 1

    这些对象在 global.asax 中的行为是否有所不同?/global.asax.vbdefault.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 中的一个实例属性,返回 Request与您调用它的页面相关联(通常隐式 this )

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

    但是,如果您的渲染启动了不同的线程,则在另一个线程中运行的代码仍然可以到达 Request。通过 Page.Request (因为它只是一个普通属性)但不会有 HttpContext与线程相关联 - 所以 HttpContext.Current.Request行不通。

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

    关于.net - HttpContext.Request 和 Request 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547989/

    相关文章:

    asp.net - Silverlight 图像查看器控件建议

    .net - 限制 .net 文本框中的行数

    c# - HttpWebRequest 长 URI 解决方法?

    c# - 如何导入HTML格式的Excel

    asp.net - 如何从 css 获取图像信息到 MasterPage'gridview?

    c# - 提高MMO游戏性能

    asp.net - 如何设置 Thread.CurrentPrincipal 以在整个应用程序中使用?

    c# - 如何在菜单中插入 DateTimePicker 并允许用户选择一个值?

    c# - 如何在 Sqlite 中使用 Dapper.QueryMultiple

    .net - RazorEngine:可以在 Webforms 应用程序中使用吗?