2010-01-09 4 views

Répondre

2

Sessions sont très pas cher pour créer, Je ne voudrais pas déranger avec ce filtre.

Littéralement, l'ouverture d'un ISession est juste une question de new SessionImpl(..). SessionImpl constructor et dispose ne pas faire beaucoup si rien ne se passe dans la session.

1

Vous pouvez ajouter la condition préalable managedHandler à votre module. Mais je ne sais pas dans quelle mesure il s'intégrera avec ASP.NET MVC à cause des fichiers statiques passant par le routage.

Quoi qu'il en soit, vous pouvez essayer quelque chose comme:

<add name="RequestTimer" type="MySite.HttpModule.RequestTimeModule, MySite" precondition="managedHandler" /> 

Jetez un oeil ici pour plus d'informations - IIS7 Preconditions

HTHS,
Charles

+0

Eh bien peut-être que je devrais faire une ActionFilter et ajoutez-le à chaque contrôleur. Mais j'aime l'idée d'un HttpModule –

+0

Avez-vous essayé de mettre dans la précondition? À quoi sert-il exactement? Pourriez-vous aborder la question d'une autre façon? – Charlino

+0

Non, je n'ai pas essayé la condition préalable. Je vais juste faire une autre solution. Comme décrit ci-dessous Mauricio ISession est bon marché dans la création, et si vous ne frappez pas la DB, aucune connexion n'est faite après tout. Eh bien, je n'aime toujours pas créer des objets que je n'utiliserai pas. Je vais juste faire UnitOfWork d'une autre manière, je suppose, Pourrait utiliser un filtre d'action –

0

Vous pouvez utiliser ceci:

void IHttpModule.Init(HttpApplication context) 
{ 
    context.PreRequestHandlerExecute += new System.EventHandler(context_PreRequestHandlerExecute); 
} 

Et vous pouvez vérifier si elle est le gestionnaire MVC (type MvcHandler) qui exécutera votre demande:

void context_PreRequestHandlerExecute(object sender, System.EventArgs e) 
{ 
    HttpContext context = ((HttpApplication)sender).Context; 
    Type mvcht = typeof(System.Web.Mvc.MvcHandler); 
    if (context.Handler != null && context.Handler.GetType().IsAssignableFrom(mvcht)) 
    { 
     ..... Code goes here. 
    } 
} 
Questions connexes