2010-04-16 9 views

Respuesta

11

utilizar la clase HttpRuntime:

if (!String.IsNullOrEmpty(HttpRuntime.AppDomainAppVirtualPath)) 
    //ASP.Net 
else 
    //Non-ASP.Net 
+0

1 por señalar que el resto de nosotros que no todo en asp.net es un hilo de solicitud - aprender algo nuevo cada día :) – Ray

0

se puede comprobar para ver si HttpContext.Current! = Null.

+2

incorrecto. Esto será nulo en un subproceso que no sea de solicitud dentro de un dominio de aplicación ASP.Net. – SLaks

0

¿Qué tal

If (Not System.Web.HttpContext.Current Is Nothing) Then 

End If 

o

if(System.Web.HttpContext.Current != null){ 

} 
+1

Incorrecto. Esto será nulo en un subproceso que no sea de solicitud dentro de un dominio de aplicación ASP.Net. Además, VB.Net tiene una palabra clave 'IsNot'. Finalmente, él está usando C#. – SLaks

+0

¡Nunca tantos han estado tan equivocados en tan poco tiempo! Gracias por dejarnos en línea. He sido la programación en VB desde VB5 así que a veces viejos hábitos tardan en morir. Es por eso que incluí ambos. – Jeremy

1

Sólo comprobar si hay algún objeto que sólo existe en una aplicación web, como HttpRuntime.AppVirtualPath que SLaks sugirió.

Si se trata de una aplicación web, todavía habría que desee comprobar si HttpContext.Current es nulo. Si la excepción se produce en un código que no se ejecuta debido a una solicitud, no tiene ningún contexto. El evento Session_OnEnd, por ejemplo, se ejecuta cuando se elimina una sesión del servidor, por lo que no tiene el contexto.

0

uso el tipo de dominio de aplicación actual DomainManager. MSDN documentation of AppDomainManager

public static class AspContext 
{ 
    public static bool IsAspNet() 
    { 
     var appDomainManager = AppDomain.CurrentDomain.DomainManager; 
     return appDomainManager != null && appDomainManager.GetType().Name.Contains("AspNetAppDomainManager"); 
    } 
} 

También puede comprobar this other answer on SO

Cuestiones relacionadas