Determine if ASP.NET application is running locally

.Netasp.netLocalhost

.Net Problem Overview


I want to know if there is a recommended way of determining if an asp application is running locally. At the moment I use the Request object and do a string search for localhost or 127.0.0.1 on the server variable but this has several limitations. The biggest one being that the Request object is not always available when I need it.

.Net Solutions


Solution 1 - .Net

See HttpRequest.IsLocal

bool isLocal = HttpContext.Current.Request.IsLocal;

Solution 2 - .Net

You can check the Request.IsLocal property

Solution 3 - .Net

This worked for me with Application_Start

if (!HostingEnvironment.IsDevelopmentEnvironment)
{
      GlobalFilters.Filters.Add(new RequireHttpsAttribute());
}

To know more about how IsDevelopmentEnvironment is set, please look at the following thread.

https://stackoverflow.com/questions/18135304/in-asp-net-what-determines-the-value-of-hostingenvironment-isdevelopmentenviron

Solution 4 - .Net

In a MVC view / ASP page / code behind class:

bool isLocal = HttpContext.Current.Request.IsLocal;

In an MVC controller :

bool isLocal = Request.IsLocal;

Solution 5 - .Net

In response to @Meh Men's comment for other answer in this thread, who asked:

> What about where Request is null. i.e: Application_start?

If you are sure your production and test or "homolog" versions of your website will all be deployed with a release version of your website, while your local environment will be built and developed in "debug" mode, you can make use of #if DEBUG sintax to write code which only should be run locally, while outside of this block, or even inside a matching #else block, you may write some other code which you want to be run only when not locally (e.g: remotely).

Here is a small sample of how I've solved this problem in a particular project I'm curreltly working on:

#if DEBUG
    // Code here will only be run locally.
#else
    // Code here will only be run "remotely".

Solution 6 - .Net

Request.IsLocal is the same as checking for 127.0.0.1 or ::1. See this post: http://forums.asp.net/p/1065813/4081335.aspx.

Solution 7 - .Net

If HttpContext.Current is not null use

HttpContext.Current.Request.IsLocal

Otherwise, for example in the App_Start or before HttpContext.Current is available, you can test

HostingEnvironment.ApplicationPhysicalPath.StartsWith(@"C:\")

or a dedicated disk on your PC.

Another way can be use a constant compilation variable set in production, for example from Azure and visualstudio.com if you use them.

It is dirty, but it works.

Solution 8 - .Net

Request is not always available in ASP.NET environment?

HttpContext and its properties Request/Response are initialized as soon as the server starts processing the page. So at any place you can execute c# code in your page life cycle you should be able to check the request url.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSeanView Question on Stackoverflow
Solution 1 - .NetRex MView Answer on Stackoverflow
Solution 2 - .NetAdamView Answer on Stackoverflow
Solution 3 - .NetSumanthView Answer on Stackoverflow
Solution 4 - .NetDamian VogelView Answer on Stackoverflow
Solution 5 - .NetUlysses AlvesView Answer on Stackoverflow
Solution 6 - .NetZLAView Answer on Stackoverflow
Solution 7 - .NetMatteo MiglioreView Answer on Stackoverflow
Solution 8 - .NetRoman RoyterView Answer on Stackoverflow