Determine if ASP.NET application is running locall

2020-02-17 08:17发布

问题:

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.

回答1:

See HttpRequest.IsLocal

bool isLocal = HttpContext.Current.Request.IsLocal;


回答2:

You can check the Request.IsLocal property



回答3:

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.

In ASP.NET, what determines the value of HostingEnvironment.IsDevelopmentEnvironment?



回答4:

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

bool isLocal = HttpContext.Current.Request.IsLocal;

In an MVC controller :

bool isLocal = Request.IsLocal;


回答5:

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.



回答6:

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.



回答7:

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.