问题描述
|
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>
解决方法
Request
在Application_Start
上不可用。
当您的Web应用程序启动且此启动与任何页面请求都没有关联时,将执行Application_Start
,因为此时尚未发生页面请求。
根据需要,您可以改用Server.MapPath()
。
, 我们正在处理哪个版本的IIS?如果是7或更高版本,则进行了可能导致此行为的更改。
请参阅本文。
, 在此处查找如何获取在IIS 6.0上的asmx Web服务中的请求之前调用Application_Start(在Global.asax.cs中)
检查可能更合适
在BeginRequest方法中
代替Application_Start
因为第一个请求可能是
当地的,但稍后您可以致电
在其他域上的应用程序和
它将不再是本地的。