In this example I define a BaseController class that inherits from System.Web.Http.ApiController. This example also shows you how you can access the System.Web.HttpRequest object for the current HTTP request to access information like QueryString, IP Address, URL information, UserAgent information, browser information, and more.
Public Class BaseController Inherits System.Web.Http.ApiController
Then you can expose whatever properties or methods you want in your BaseController class.
Public ReadOnly Property QueryString() As String Get Try Return DirectCast(Request.Properties("MS_HttpContext"), HttpContextBase).Request.QueryString.ToString Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property IPAddress() As String Get Try Return DirectCast(Request.Properties("MS_HttpContext"), HttpContextBase).Request.UserHostAddress Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property UrlRequest() As String Get Try Return DirectCast(Request.Properties("MS_HttpContext"), HttpContextBase).Request.Url.AbsoluteUri Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property RawUrl() As String Get Try Return DirectCast(Request.Properties("MS_HttpContext"), HttpContextBase).Request.RawUrl Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property UrlReferrer() As String Get Try Return DirectCast(Request.Properties("MS_HttpContext"), HttpContextBase).Request.UrlReferrer.AbsoluteUri Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property UserAgent() As String Get Try Return DirectCast(Request.Properties("MS_HttpContext"), HttpContextBase).Request.UserAgent Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property Crawler() As Boolean Get Try Return DirectCast(Request.Properties("MS_HttpContext"), HttpContextBase).Request.Browser.Crawler Catch ex As Exception Return False End Try End Get End Property
This same concept also works for System.Web.Mvc.Controller.
Public Class BaseController Inherits System.Web.Mvc.Controller
In the case of System.Web.Mvc.Controller, we can access the current HTTP request directly from the Request object, without needing to look at MS_HttpContext.
Public ReadOnly Property QueryString() As String Get Try Return Request.QueryString.ToString Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property IPAddress() As String Get Try Return Request.UserHostAddress Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property UrlRequest() As String Get Try Return Request.Url.AbsoluteUri Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property RawUrl() As String Get Try Return Request.RawUrl Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property UrlReferrer() As String Get Try Return Request.UrlReferrer.AbsoluteUri Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property UserAgent() As String Get Try Return Request.UserAgent Catch ex As Exception Return String.Empty End Try End Get End Property Public ReadOnly Property Crawler() As Boolean Get Try Return Request.Browser.Crawler Catch ex As Exception Return False End Try End Get End Property
Now when you create your individual Web or API controllers, you can inherit from the BaseController and access the exposed properties or methods easily.
Matt Pavey is a Microsoft Certified software developer who specializes in ASP.Net, VB.Net, C#, AJAX, LINQ, XML, XSL, Web Services, SQL, jQuery, and more. Follow on Twitter @matthewpavey
0 comments: