在此上下文中不提供请求

时间:2011-05-28 04:58:22

标签: asp.net vb.net

Exception Details: System.Web.HttpException: Request is not available in this context

Source Error:

Line 7:     Private Sub Application_Start(sender As Object, e As EventArgs)
Line 8:     ' Caching the tracker image in memory
Line 9:     Dim trackerImg As Byte() = File.ReadAllBytes(Context.Request.MapPath(ConfigurationManager.AppSettings("SD_Tut_ImageFileLocation")))
Line 10:    Application(ConfigurationManager.AppSettings("SD_Tut_ImageFileKeyName")) = trackerImg

错误在第9行

这是Global.asax代码

<%@ Application Language="vb" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="Stardeveloper.Tutorial" %>

<script runat="server">
   Private Sub Application_Start(sender As Object, e As EventArgs)
    ' Caching the tracker image in memory
    Dim trackerImg As Byte() = File.ReadAllBytes(Context.Request.MapPath(ConfigurationManager.AppSettings("SD_Tut_ImageFileLocation")))
    Application(ConfigurationManager.AppSettings("SD_Tut_ImageFileKeyName")) = trackerImg

    ' Creating a new request queue collection
    Dim queueCapacity As Integer = Convert.ToInt32(ConfigurationManager.AppSettings("SD_Tut_TrackerRequestsToCache"))
    Dim trackerReqQueue As New Queue(Of TrackerRequest)(queueCapacity)
    Application(ConfigurationManager.AppSettings("SD_Tut_TrackerCachedRequestsKeyName")) = trackerReqQueue
End Sub

Private Sub Application_End(sender As Object, e As EventArgs)
    ' Storing the queued tracker reqs to database
    Dim trackerReqQueue As Queue(Of TrackerRequest) = DirectCast(Application(ConfigurationManager.AppSettings("SD_Tut_TrackerCachedRequestsKeyName")), Queue(Of TrackerRequest))
    Tracker.FlushRequestQueueCache(trackerReqQueue)
End Sub

</script>

3 个答案:

答案 0 :(得分:1)

我们正在处理哪个版本的IIS?如果是7或更高版本,则会发生可能导致此行为的更改。

请参阅this article.

答案 1 :(得分:0)

<{1}}上无法使用

Request

当您的Web应用程序启动并且此启动与任何页面请求无关时,

Application_Start将被执行,因为此时页面请求尚未发生。

根据您的需要,您可以改为使用Application_Start

答案 2 :(得分:0)

在此查找how to get Application_Start (in Global.asax.cs) to be called before requests in asmx web service on IIS 6.0

  

检查可能更合适   这在BeginRequest方法中   而不是Application_Start   因为第一个请求可能是   当地但后来你可以打电话给   应用于其他一些领域和   它将不再是本地的。

相关问题