如何从Global.asax访问公共属性



我是处理global.asax文件的新手。我有一个应用程序,需要设置一些应用程序范围的变量,这些变量的值来自web.config文件。全球asax似乎是保存这些内容的合乎逻辑的地方。我的全局asax文件如下:

Imports System.Web.Http
Imports System.Web.Optimization
Imports System.Net.Http.Formatting
Imports System.Net.Http.Headers
Imports utl = Common.Utilities
Public Class WebApiApplication
Inherits System.Web.HttpApplication
Private _SptZones As String
Private _spdZones As String
Private _spmZones As String
Sub Application_Start()
GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(New QueryStringMapping("xml", "true", "application/xml"))
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SupportedMediaTypes.Add(New MediaTypeHeaderValue("text/html"))
AreaRegistration.RegisterAllAreas()
GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
RouteConfig.RegisterRoutes(RouteTable.Routes)
BundleConfig.RegisterBundles(BundleTable.Bundles)
AppInitialise()
End Sub
''' <summary>
''' Initialise the application,  load settings from web.config file
''' </summary>
Private Sub AppInitialise()
_SptZones = utl.GetSetting("SptZones")
_spdZones = utl.GetSetting("SpdZones")
_spmZones = utl.GetSetting("SpmZones")
End Sub
Public ReadOnly Property SptZones As String
Get
Return _SptZones
End Get
End Property
Public ReadOnly Property SpdZones As String
Get
Return _spdZones
End Get
End Property
Public ReadOnly Property SpmZones As String
Get
Return _spmZones
End Get
End Property
End Class

然后,我需要从控制器访问global.asax中的属性,如下所示:

If scadaSource.IndexOf("SPT") > -1 Then
'pseudo code
criteria &= global asax property SptZones
End If

由于这些不是共享属性,因此可以从HttpApplication 的当前实例中获取

DirectCast(HttpContext.ApplicationInstance, WebApiApplication).SptZones

最新更新