MC, 14:01 środa, 27.08.2014 r.
Ilustracja do artykułu: .NET - Odpowiednik HttpContext.Current.Server.MapPath() dla aplikacji konsolowej

.NET - Odpowiednik HttpContext.Current.Server.MapPath() dla aplikacji konsolowej

Pytanie o odpowiednik metody HttpContext.Current.Server.MapPath(), która pozwala uzyskać absolutną ścieżkę do pliku w obrębie projektu, w odniesieniu do aplikacji konsolowych pojawia się bardzo często. Odpowiedzi można znaleźć różne, przy czym bardzo często niezbyt dobre, bo polegające między innymi na składaniu ścieżki ze zmiennych środowiskowych, podczas gdy można to zrobić znacznie prościej, o czym w dalszej części artykułu.

Co może traktować jako odpowiednik HttpContext.Current.Server.MapPath() dla aplikacji konsolowych?

Od razu przechodząc do rzeczy, moim zdaniem najlepszym rozwiązaniem, a zarazem najczęściej wykorzystywanym przeze mnie, jest metoda System.IO.Path.GetFullPath(), która podobnie do MapPath() zwróci absolutną ścieżkę do wskazanego pliku, w tym takiego, który znajduje się w projekcie aplikacji. Jest jednak między nimi drobna różnica. GetFullPath() od razu zakłada, że przekazana ścieżka będzie relatywna, a zatem jej wywołanie nieco się różni od MapPath(), co przedstawia poniższy przykład:

Wywołanie HttpContext.Current.Server.MapPath() w aplikacjach webowych:

HttpContext.Current.Server.MapPath("~/App_Data/jakisPlik.txt");

Wywołanie System.IO.Path.GetFullPath() w aplikacjach webowych:

System.IO.Path.GetFullPath("App_Data/jakisPlik.txt");

Warto również wspomnieć, że przy takim podejściu w aplikacjach konsolowych, katalog App_Data powinien być przekopiowany do katalogu wyjściowego budowania projektu.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: