2009-03-28 15 views
69

Quiero saber si hay una forma recomendada de determinar si una aplicación asp se está ejecutando localmente. Por el momento, utilizo el objeto Request y hago una búsqueda de cadenas para localhost o 127.0.0.1 en la variable del servidor, pero esto tiene varias limitaciones. El más grande es que el objeto Request no siempre está disponible cuando lo necesito.Determinar si la aplicación ASP.NET se ejecuta localmente

Respuesta

136

Ver HttpRequest.IsLocal

bool isLocal = HttpContext.Current.Request.IsLocal; 
+3

¿Qué hay de donde solicitud es nula. i.e: Application_start? – mmtemporary

+0

@mmtemporary durante el Application_Start no hay solicitud, no hay ninguna razón para verificar si Request.IsLocal o no. Si desea usarlo en Global.asax, considere usarlo dentro de Application_BeginRequest. –

+1

@ViniciusRocha En algún escenario, queremos verificar que cuando Request sea nulo. – mmtemporary

12

Usted puede comprobar la propiedad Request.IsLocal

0

Solicitud no siempre está disponible en el entorno ASP.NET?

HttpContext y sus propiedades La solicitud/respuesta se inicializan tan pronto como el servidor comienza a procesar la página. Por lo tanto, en cualquier lugar puede ejecutar el código C# en el ciclo de vida de su página, debería poder verificar la URL de solicitud.

+0

No me di cuenta de que podía usar la clase HttpContext para acceder al objeto Request. – Sean

+0

Por curiosidad, ¿qué otro método de acceso al objeto Solicitud está disponible? Gracias :) –

+0

System.Web.UI.Página.Request – Sean

1

Request.IsLocal es lo mismo que comprobar 127.0.0.1 o :: 1. Ver esta publicación: http://forums.asp.net/p/1065813/4081335.aspx.

+2

Sí, pero el uso de una llamada de biblioteca estándar transmite mejor la intención del código, IMO. Preferiría usar la biblioteca en lugar de escribir mi propio código para hacer algo tan simple. – Sean

+0

Estoy de acuerdo. Solo quería señalar que dado que la respuesta designada puede ser el mismo código que el póster, la respuesta puede tener las mismas limitaciones. – ZLA

+1

Ese enlace no es correcto. Si presiono localmente mi servidor a través de su dirección IP, HttpContext.Current.Request.IsLocal devuelve correctamente true, pero UserHostAddress es la dirección IP real, no 127.0.0.1 (o :: 1). Probado en .NET 4. – mhenry1384

0

Si HttpContext.Current no es nula utilización

HttpContext.Current.Request.IsLocal 

De lo contrario, por ejemplo en el App_Start o antes HttpContext.Current está disponible, puede probar

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

o un disco dedicado en su ORDENADOR PERSONAL.

Otra forma se puede utilizar una variable de compilación constante establecida en la producción, por ejemplo desde Azure y visualstudio.com si los usa.

Está sucio, pero funciona.

1

En una vista MVC/página ASP/código detrás de la clase:

bool isLocal = HttpContext.Current.Request.IsLocal; 

En un controlador MVC:

bool isLocal = Request.IsLocal; 
Cuestiones relacionadas