2009-10-05 9 views
5

Chcę użyć metody Server.MapPath() w celu zamapowania katalogu wirtualnego Utworzono do jej fizycznej ścieżki.Server.MapPath()

Chodzi o to, że środowisko .net nie rozpoznaje Server.MapPath().

Firma Google poinformowała mnie, że powinienem używać HttpContext.Current.Server przy użyciu System.Web, , ale HttpContext nie jest rozpoznawany, mimo że korzystam z System.Web. (I sprawdziłem - HttpContext JEST jedną z klas System.Web)

Pomoc?

+0

Jaki to by był język? – Esko

+0

"środowisko .net nie rozpoznaje Server.MapPath()". Czy jest jakiś błąd? – rahul

+1

Czy uwzględniłeś System.Web jako odniesienie do projektu? – rslite

Odpowiedz

3

Upewnij się, że zawarte w projektach System.Web Referencje Czy te (w Visual Studio IDE):

  1. prawym przyciskiem myszy na węzeł projektu (roztwór Explorer okno)
  2. Na mennu kontekstowego , kliknij Dodaj odniesienie
  3. Wybierz System.Web na elementach listy .NET Tab.
  4. Hit przycisk OK

Server.MapPath powinien być dostępny.

+0

To rozwiązanie sprawdziło się, ponieważ pracowałem w bibliotece klas. –

3

Jeśli posiadasz aplikację internetową, powinieneś automatycznie odwołać się do System.Web.dll i powinieneś mieć dostęp do klasy System.Web.HttpContext. Sprawdź, czy przypadkowo nie usunięto odniesienia. Aby uzyskać dostęp do klasy , należy podać instrukcję using System.Web; bez określania pełnej przestrzeni nazw.

Jeśli nie masz aplikacji internetowej, musisz dodać sondę do System.Web.dll, aby uzyskać dostęp do klasy HttpContext, ale to nie pomoże ci. Ponieważ nie ma aplikacji internetowej, nie ma kontekstu HTTP i nie ma głównego folderu sieciowego, więc nie można używać metody MapPath.

+0

Może to być metoda w oddzielnym zespole, która jest używana przez aplikację internetową, więc kontekst może być tam mimo wszystko. – rslite

+0

@rslite: Tak, masz rację. Jest to również możliwe, dlaczego brakuje referencji. – Guffa

1

Ten sam problem tutaj. W aplikacji sieci web ASP.net 4.0, w obsadzie obsługi .ashx, z numerem using System.Web u góry. Nie mogłem użyć Server.MapPath(), co jest tym, co mam do powiedzenia w książce, lub System.Web.HttpServerUtility.MapPath(), co ciągle pojawia się w Google i MSDN. Nie mogłem również używać HttpServerUtility.MapPath(), jak wspomniano powyżej.

Jednak jedna z pozostałych odpowiedzi skłoniła mnie do wypróbowania context.Server.MapPath(), która działa w mojej metodzie ProcessRequest(HttpContext context).

+0

Aby być jeszcze dokładniejszym: 'HttpContext.Current.Server.MapPath()' – Nurp

Powiązane problemy