2010-06-11 8 views
6

Stwierdziłem, że muszę skonfigurować log4net na podstawie pliku w stosunku do fizycznej lokalizacji działającej aplikacji sieci web ASP.NET. Chcemy uruchomić rejestrator tak wcześnie, jak to możliwe, więc Application_Start wydaje się być właściwym miejscem. W IIS6, to działa prawidłowo i działa już od wieków, ale teraz przeniósł się do IIS7 i nie będzie już pracować:Jak uzyskać fizyczną lokalizację aplikacji WWW ASP.NET bez użycia HttpContext.Current?

string absolutePath = HttpContext.Current.Request.PhysicalApplicationPath; 

ponieważ HttpContext.Current nie jest dostępny w wielu global.asax (Application, Session) wydarzenia. To jest stara wiadomość, wszyscy wiemy, że to podnosi niesławny Request is not available in this context error. Nie chcemy wrócić do trybu klasycznego.

Teraz pytanie jest proste: bez użycia numeru HttpContext, czy możliwe jest znalezienie fizycznej lokalizacji aktualnie uruchomionej instancji aplikacji WWW?

+1

Czy to pomoże? - http://stackoverflow.com/questions/1740422/asp-net-current-physical-location –

+0

Tak, pomaga, dzięki! – Abel

Odpowiedz

0

Jako alternatywną odpowiedź na moje własne pytanie, chciałbym dodać, że Server.MapPath() działa również podczas zdarzenia Application_Start. Ścieżka domeny aplikacji byłaby wtedy równa Server.MapPath("~"), ale jest bardziej poręczna, jeśli chodzi o odwzorowywanie względnych ścieżek, co eliminuje obciążenie związane z konkatenacją (na co MapPath miał zacząć).