Adding Global Objects Application-Level Code and global.asax
6.9.2 global.asax Compiles to a Class
The first time an application is accessed, its global.asax file is compiled into a class that inherits from the HttpApplication class defined in the System.Web namespace. The subroutines declared in global.asax become methods of the compiled class. Although the members of the HttpApplication class are not discussed further in this book, be aware that, if desired, those members can be accessed by code in global.asax. In addition, events exposed by the HttpApplication class can be handled by adding event handlers to global.asax. Each event handler must have the right signature, as defined by that events documentation and a Handles MyBase.EventName clause to register the handler with the event. Again, the events exposed by the HttpApplication class arent discussed further in this book. However, in case you would like to pursue it on your own, Ex am ple 6- 10 shows how such an event handler can be declared in global.asax. Example 6-10. Handling an HttpApplication class event in global.asax script language=vb runat=server ... Handle the base classs BeginRequest event. The name of the event handler is not important, but the signature and the Handles clause are. Private Sub HttpApplication_BeginRequest _ ByVal sender As Object, _ ByVal e As EventArgs _ Handles MyBase.BeginRequest ... End Sub script6.9.3 Adding Global Objects
An application often needs to instantiate an object and make it available to all pages within a session or within the entire application. One way to do this is by instantiating the object in the Session_OnStart or Application_OnStart methods and saving the object reference in the ASP.NET Session or Application object, respectively. Pages can then read the object reference from the Session or Application object and use it as needed. 306 A slightly more convenient way to achieve a similar result is to place an object element in the global.asax file. The object element indicates that an instance of the given class should be created and made available to all pages in the session or application depending on the attributes specified. ASP.NET makes the object available to all pages in the application by adding a property to every page in the application. The property is named identically to the ID attribute of the object element. For example, here is an object element that creates a Hashtable object that is available application-wide: object id=myHashtable runat=server scope=Application class=System.Collections.Hashtable This declaration specifies the following: • An instance of the Hashtable class defined in the System.Collection namespace will be created class=System.Collections.Hashtable . • This single instance of the Hashtable class will be shared by all pages in the application scope=Application . If there is to be a separate instance for each session, specify scope=Session . • A property named myHashtable will be added to every page in the application to permit web page code easy access to the object id=myHashtable . Code to access the object instance from a web page would look like this: Page Language=vb script runat=server Protected Overrides Sub OnLoadByVal e As EventArgs Do something with the object created in global.asax. myHashtable.AddSomeKey, SomeValue End Sub script ... The property that is automatically compiled into the page in this case, the myHashtable property is compiled into the class that is compiled from the .aspx file. It is not compiled into the pages code- behind class if there is one. This means that the property is available to code that is embedded in the .aspx file, but not to code in the code-behind class. All objects created as a result of object elements appearing in global.asax are added to the StaticObjects collection of either the Session object or the Application object depending on the value specified for the scope attribute of the object element. For example, the myHashtable object could be accessed in this way: Page Language=vb script runat=server Protected Overrides Sub OnLoadByVal e As EventArgs Do something with the object created in global.asax. Dim ht As Hashtable ht = CTypeApplication.StaticObjectsmyHashTable, Hashtable ht.Addfoo, bar End Sub script 307 ... This has the advantage of also working from the code-behind class, or from any code that has access to the ASP.NET Application or Session object.6.10 Web-Application Security
Parts
» VB.NET - (O'Reilly) Programming Visual Basic NET
» What Is the Microsoft .NET Framework?
» hello, world An Example Visual Basic .NET Program
» Hello, Windows An Example Visual Basic .NET Program
» Hello, Browser An Example Visual Basic .NET Program
» Source Files Identifiers The Visual Basic .NET Language
» Numeric Literals String Literals Character Literals
» Date Literals Boolean Literals Nothing Summary of Literal Formats
» Custom Types Collections Types
» The Namespace Statement The Imports Statement
» Symbolic Constants Scope The Visual Basic .NET Language
» Access Modifiers Assignment The Visual Basic .NET Language
» Unary Operators Arithmetic Operators
» Relational Operators Operators and Expressions
» String-Concatenation Operators Bitwise Operators
» Logical Operators Operator Precedence
» Call Exit Branching Statements
» Goto If RaiseEvent Branching Statements
» Return Select Case Branching Statements
» For Each Iteration Statements
» Object Instantiation and New Constructors
» Handling Events Inheritance Classes
» Passing arrays as parameters
» Variable-length parameter lists Main method
» Implementing interface methods Overriding inherited methods
» Overloading Overloading inherited methods
» The MyBase Keyword Nested Classes Destructors
» Interfaces The Visual Basic .NET Language
» Enumerations The Visual Basic .NET Language
» Exceptions The Visual Basic .NET Language
» Delegates The Visual Basic .NET Language
» Using Events and Delegates Together
» Creating Custom Attributes Attributes
» Standard Modules Conditional Compilation
» Summary The Visual Basic .NET Language
» Common Language Infrastructure CLI and Common Language Runtime CLR
» Global Assembly Cache GAC Comparison of Assemblies, Modules, and Namespaces
» Application Domains Common Language Specification CLS
» Intermediate Language IL and Just-In-Time JIT Compilation Metadata
» Finalize Memory Management and Garbage Collection
» Dispose Memory Management and Garbage Collection
» A Brief Tour of the .NET Framework Namespaces
» Configuration File Format Configuration
» Configuration Section Groups The appSettings Section
» Adding event handlers Creating a Form in Code
» Handling Form Events Windows Forms I: Developing Desktop Applications
» Relationships Between Forms Windows Forms I: Developing Desktop Applications
» Merging Menus MDI Applications
» Detecting MDI Child Window Activation
» Component Attributes Windows Forms I: Developing Desktop Applications
» The Graphics Class 2-D Graphics Programming with GDI+
» The Pen Class 2-D Graphics Programming with GDI+
» The Brush Class 2-D Graphics Programming with GDI+
» System colors The Color Structure
» Alpha Blending 2-D Graphics Programming with GDI+
» Antialiasing 2-D Graphics Programming with GDI+
» The PrintPageEventArgs Class Printing
» The OnBeginPrint and OnEndPrint Methods Choosing a Printer
» The PageSettings Class Printing
» The PrinterSettings Class Printing
» Page Setup Dialog Box Print Preview
» Summary Windows Forms I: Developing Desktop Applications
» The Button Class The CheckBox Class The ComboBox Class
» The DateTimePicker Class The GroupBox Class The ImageList Class
» The Label Class The LinkLabel Class
» The ListBox Class Common Controls and Components
» The ListBox.ObjectCollection Class
» The ListView Class Common Controls and Components
» The MonthCalendar Class Common Controls and Components
» The Panel Class The PictureBox Class
» The RadioButton Class Common Controls and Components
» The TextBox Class The Timer Class
» Other Controls and Components
» Control Events Windows Forms II: Controls, Common Dialog Boxes, and Menus
» The Anchor Property Form and Control Layout
» Controlling dock order The Dock Property
» The Splitter control The Dock Property
» ColorDialog FontDialog OpenFileDialog Common Dialog Boxes
» PageSetupDialog PrintDialog PrintPreviewDialog SaveFileDialog
» Adding Menus in the Visual Studio .NET Windows Forms Designer
» Programmatically Creating Menus Menus
» Building Controls from Other Controls
» Building Controls That Draw Themselves Building Nonrectangular Controls
» Summary Windows Forms II: Controls, Common Dialog Boxes, and Menus
» Setting control properties using attributes Adding event handlers
» AutoEventWireup Handling Page Events
» The Button control Web Controls
» The CheckBox control The DropDownList control
» The Image control The Label control
» The ListBox control Web Controls
» The RadioButton control Web Controls
» The Table control Web Controls
» The TextBox control Web Controls
» Other web controls Web Controls
» HTML Controls Handling Control Events
» Programmatically Instantiating Controls More About Server Controls
» More About Validation-Control Tag Attributes
» Using Validation-Control Properties Providing a Summary View of Validation Failures
» Performing Custom Validation Adding Validation
» Using Directives to Modify Web Page Compilation
» The Server Object ASP.NET Objects: Interacting with the Framework
» The Application Object The Session Object The Cache Object The Request Object
» The Response Object ASP.NET Objects: Interacting with the Framework
» Discovering Browser Capabilities ASP.NET and Web Forms: Developing Browser-Based Applications
» The Session Object Maintaining State
» The Application Object Maintaining State
» Session and Application Startup and Shutdown global.asax Compiles to a Class
» Adding Global Objects Application-Level Code and global.asax
» ASP.NET authorization Authorization
» Windows NTFS authorization Code-access authorization
» IUSR_ComputerName Impersonation Accessing Network Resources
» User Controls Designing Custom Controls
» Creating a custom server control using Visual Studio .NET
» Creating a custom server control in code Using a custom server control in Visual Studio .NET
» Summary ASP.NET and Web Forms: Developing Browser-Based Applications
» The WebService Attribute The WebMethod Attribute
» Testing a Web Service with a Browser
» Consuming a Web Service in Visual Studio .NET
» Consuming a Web Service in Notepad
» Synchronous Versus Asynchronous Calls
» Web-Service Descriptions Web-Service Discovery
» Limitations of Web Services Summary
» A Brief History of Universal Data Access Managed Providers
» Connecting to a SQL Server Database
» Connecting to an OLE DB Data Source
» The DataSet Class Finding Tables
» Finding Column Values Finding Column Definitions Changing, Adding, and Deleting Rows
» Writing Updates Back to the Data Source
» Relations Between DataTables in a DataSet
» The DataSets XML Capabilities
» Binding a DataSet to a Windows Forms DataGrid
» Binding a DataSet to a Web Forms DataGrid
» Typed DataSets ADO.NET: Developing Database Applications
» Reading Data Using a DataReader
Show more