Imports System Imports Microsoft.Web.Administration Namespace SystemWebServer.HttpErrors #Region "config sections" Public Class HttpErrorsSection Inherits ConfigurationSection Public Shared SectionName As String = "system.webServer/httpErrors" Public Sub New() MyBase.New End Sub Public Property ErrorMode() As EnumHttpErrorsErrorMode Get Return CType(MyBase.Item("errorMode"),EnumHttpErrorsErrorMode) End Get Set MyBase.Item("errorMode") = CType(value,EnumHttpErrorsErrorMode) End Set End Property Public Property ExistingResponse() As EnumHttpErrorsExistingResponse Get Return CType(MyBase.Item("existingResponse"),EnumHttpErrorsExistingResponse) End Get Set MyBase.Item("existingResponse") = CType(value,EnumHttpErrorsExistingResponse) End Set End Property Public Property DefaultPath() As String Get Return CType(MyBase.Item("defaultPath"),String) End Get Set MyBase.Item("defaultPath") = CType(value,String) End Set End Property Public Property DefaultResponseMode() As EnumHttpErrorsDefaultResponseMode Get Return CType(MyBase.Item("defaultResponseMode"),EnumHttpErrorsDefaultResponseMode) End Get Set MyBase.Item("defaultResponseMode") = CType(value,EnumHttpErrorsDefaultResponseMode) End Set End Property Public Property DetailedMoreInformationLink() As String Get Return CType(MyBase.Item("detailedMoreInformationLink"),String) End Get Set MyBase.Item("detailedMoreInformationLink") = CType(value,String) End Set End Property Public ReadOnly Property Errors() As ErrorsCollection Get Return CType(MyBase.GetCollection(GetType(ErrorsCollection)),ErrorsCollection) End Get End Property End Class #End Region #Region "config collections" Public Class ErrorsCollection Inherits ConfigurationElementCollectionBase Public Sub New() MyBase.New End Sub Public Default ReadOnly Property Item(ByVal statusCode As UInteger, ByVal subStatusCode As Integer) As ErrorsCollectionElement Get Dim i As Integer = 0 Do While (i < Me.Count) Dim element As ErrorsCollectionElement = MyBase.Item(i) If ((true _ AndAlso (element.StatusCode = statusCode)) _ AndAlso (element.SubStatusCode = subStatusCode)) Then Return element End If i = (i + 1) Loop Return Nothing End Get End Property Public Function Add(ByVal statusCode As UInteger, ByVal subStatusCode As Integer, ByVal prefixLanguageFilePath As String, ByVal path As String, ByVal responseMode As EnumErrorsCollectionResponseMode) As ErrorsCollectionElement Dim element As ErrorsCollectionElement = MyBase.CreateElement element.StatusCode = statusCode element.SubStatusCode = subStatusCode element.PrefixLanguageFilePath = prefixLanguageFilePath element.Path = path element.ResponseMode = responseMode Return MyBase.Add(element) End Function Protected Overrides Function CreateNewElement(ByVal elementTagName As String) As ErrorsCollectionElement Return New ErrorsCollectionElement End Function Public Sub Remove(ByVal statusCode As UInteger, ByVal subStatusCode As Integer) MyBase.Remove(Me(statusCode, subStatusCode)) End Sub End Class #End Region #Region "config elements" Public Class ErrorsCollectionElement Inherits ConfigurationElement Public Sub New() MyBase.New End Sub Public Property StatusCode() As UInteger Get Return CType(CType(MyBase.Item("statusCode"),Long),UInteger) End Get Set MyBase.Item("statusCode") = CType(value,UInteger) End Set End Property Public Property SubStatusCode() As Integer Get Return CType(MyBase.Item("subStatusCode"),Integer) End Get Set MyBase.Item("subStatusCode") = CType(value,Integer) End Set End Property Public Property PrefixLanguageFilePath() As String Get Return CType(MyBase.Item("prefixLanguageFilePath"),String) End Get Set MyBase.Item("prefixLanguageFilePath") = CType(value,String) End Set End Property Public Property Path() As String Get Return CType(MyBase.Item("path"),String) End Get Set MyBase.Item("path") = CType(value,String) End Set End Property Public Property ResponseMode() As EnumErrorsCollectionResponseMode Get Return CType(MyBase.Item("responseMode"),EnumErrorsCollectionResponseMode) End Get Set MyBase.Item("responseMode") = CType(value,EnumErrorsCollectionResponseMode) End Set End Property End Class #End Region #Region "config enums" Public Enum EnumErrorsCollectionResponseMode File = 0 ExecuteURL = 1 Redirect = 2 End Enum Public Enum EnumHttpErrorsDefaultResponseMode File = 0 ExecuteURL = 1 Redirect = 2 End Enum Public Enum EnumHttpErrorsErrorMode DetailedLocalOnly = 0 Custom = 1 Detailed = 2 End Enum Public Enum EnumHttpErrorsExistingResponse [Auto] = 0 Replace = 1 PassThrough = 2 End Enum #End Region End Namespace