Pregunta

Me estoy poniendo excepción de que cuando trato de acceder al objeto HttpContext.Current.Request.

he visto las respuestas en L1 , y href="https://stackoverflow.com/questions/1790457/global-asax-get-the-server-name"> L3 ... así. .. mi pregunta entonces es:

Por lo que en el mundo son ahora para IHttpModules?

Quería desarrollar un módulo que es golpeado cada vez que una llamada ingrese a la página web de mayo, para que pueda registrar la URL visitada, la IP del usuario, etc ..., pero ahora parece que no puedo hacerlo más en IIS7 . ¿Hay algún trabajo alrededor? (Además de interruptor en "modo clásico").

alt text http://userserve-ak.last.fm/serve /126/24432467.jpg

Saludos.

¿Fue útil?

Solución

Cuando haces eso? es en un evento de módulo? Debe ser perfectamente factible en una piscina integrada así. La línea de fondo hay cambios en la forma en ASP.NET engancha a IIS cuando se ejecuta en el modo integrado que hace que sea "más de primera clase". Esto significa que ciertos eventos fuego antes, por ejemplo Application_Start ahora fuego fuera del contexto de una solicitud real. Otros ejemplos están esperando a tener una identidad de Windows autenticado en el BeginRequest, ya que ahora BeginRequest sucede incluso antes de que IIS autentica, que no era el caso en el pasado.

Si su aplicación depende de la edad, el mal comportamiento todavía puede cambiar su AppPool para funcionar en el modo clásico y va a funcionar muy bien.

debe ser capaz de agarrar la solicitud en cualquiera de las notificaciones que son petición específica como BeginRequest, EndRequest PostAuthorizeRequest, etc. También, recomendaría contra el uso de HttpContext.Current ya que incurre en un aspecto adicional en una tabla hash y por lo general se puede conseguir directamente el contexto de otras maneras, especialmente en el contexto de un módulo, así que por ejemplo si se maneja el BeginRequest, usted debe ser capaz de hacer:

    HttpApplication application = (HttpApplication)sender;  
    HttpContext context = application.Context;  

y se ahorrará la búsqueda.

A partir de su descripción suena como usted debe estar implementando un módulo que BeginRequest mangos y EndRequest y que debe estar bien.

Otros consejos

Me ha publicado esto originalmente como un comentario porque no es realmente una respuesta, pero no vio entonces que usted está buscando un "trabajo en torno a" lo que aquí es mi idea de un trabajo alrededor.

/App_Code/BasePage.vb

 Public Class BasePage : Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ''# Do all your logging here
    End Sub
 End Class

/Default.aspx.vb

Partial Class _Default : Inherits BasePage
    ''# This is simply your code behind for each page (notice it inherits BasePage)
    ''# You can still have your Page_Load events along with custom methods in here, 
    ''# and it will not affect the logging portion of your app.
End Class

Básicamente lo que estás haciendo es crear una única clase que hace el mismo trabajo en cada carga de página independientemente de la página que se está cargando. A continuación, cada página de la aplicación heredará de la clase BasePage con el fin de activarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top