Déterminez si l’application ASP.NET est exécutée localement

Je veux savoir s’il existe un moyen recommandé de déterminer si une application ASP s’exécute localement. Pour le moment, j’utilise l’object Request et effectue une recherche de chaîne pour localhost ou 127.0.0.1 sur la variable serveur, mais cela présente plusieurs limitations. Le plus important étant que l’object Request n’est pas toujours disponible lorsque j’en ai besoin.

Voir HttpRequest.IsLocal

bool isLocal = HttpContext.Current.Request.IsLocal; 

Vous pouvez vérifier la propriété Request.IsLocal

Cela a fonctionné pour moi avec Application_Start

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

Pour en savoir plus sur la configuration de IsDevelopmentEnvironment, consultez le fil de discussion suivant.

Dans ASP.NET, qu’est-ce qui détermine la valeur de HostingEnvironment.IsDevelopmentEnvironment?

Request.IsLocal est identique à la vérification de 127.0.0.1 ou :: 1. Voir ce post: http://forums.asp.net/p/1065813/4081335.aspx .

Dans une vue MVC / page ASP / code derrière la classe:

 bool isLocal = HttpContext.Current.Request.IsLocal; 

Dans un contrôleur MVC:

 bool isLocal = Request.IsLocal; 

La demande n’est pas toujours disponible dans l’environnement ASP.NET?

HttpContext et ses propriétés Request / Response sont initialisées dès que le serveur commence à traiter la page. Donc, à n’importe quel endroit, vous pouvez exécuter le code c # dans le cycle de vie de votre page, vous devriez pouvoir vérifier l’URL de la requête.

Si HttpContext.Current n’est pas une utilisation null

 HttpContext.Current.Request.IsLocal 

Sinon, par exemple dans App_Start ou avant HttpContext.Current est disponible, vous pouvez tester

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

ou un disque dédié sur votre PC.

Vous pouvez également utiliser une variable de compilation constante en production, par exemple à partir d’Azure et de visualstudio.com si vous les utilisez.

C’est sale, mais ça marche.