2010-02-03 9 views
6

Mamy aplikację napisaną w ASP.NET 3.5. W nim uzyskujemy dostęp do pliku z tyłu kodu. (Dostęp do zwykłego C#, wykonywany na serwerze podczas cyklu życia strony, nie ma to nic wspólnego z adresami URL lub przeglądarkami internetowymi).Folder roboczy w ASP.NET

W naszych systemach produkcyjnych podajemy pełną ścieżkę do danego pliku w pliku web.config. Chcielibyśmy włączyć lokalną kopię pliku do projektu w kontroli wersji, a następnie użyć ścieżki względnej w sterowanej przez wersję pliku web.config, aby wskazać na nią, tak aby wyewidencjonowana kopia aplikacja może być uruchamiana z poziomu debugera Visual Studio bez konieczności jakiejkolwiek konfiguracji.

Problem polega na tym, że gdy aplikacja internetowa działa w trybie debugowania, jej katalog roboczy nie jest ani projektem, ani katalogiem rozwiązań. W aplikacji Windows lub konsoli na stronie właściwości projektu mogę ustawić katalog roboczy. Ale w aplikacji internetowej nie mogę.

Jakieś pomysły na to, jak udaje mi się to zrobić?

Odpowiedz

14

Aby uzyskać ścieżkę do katalogu głównego aplikacji:

//equivalent to Server.MapPath("/"); if at domain root, e.g Http://mysite.com/ 
string path = Server.MapPath("~"); 

This answer daje wybiegiem kilku różnych wspólnych Server.MapPath() zastosowań, które mogą być również przydatne dla Ciebie.

+4

Będziesz lepiej wyłączyć za pomocą 'HostingEnvironment.MapPath()', ponieważ nie wymagają 'HttpContext': http://stackoverflow.com/q/944219/3205 – skolima

3

Zastosowanie:

Server.MapPath("~"); 
4

W kodzie za: HttpContext.Current.Server.MapPath ("~")