2012-01-27 9 views
6

Próbuję otworzyć plik, który zawiera niektóre dane w katalogu sieci web, że mój C# jest uruchomiony. Zasadniczo po prostu zmienia się w ciąg znaków. Próbowałem robić Po ...ASP.NET C# uzyskać cały tekst z pliku na ścieżce internetowej

string email = File.ReadAllText("/orderforms/email_templates/file_to_include.txt"); 

Nie jestem pewien, czy to jest poprawna metoda, ale wydaje się, że jest problem pathing, cała trasa będzie się zmieniać w zależności co serwer sieciowy jest uruchomiony na.

To jest konfiguracja katalogu ...

/Classes/Page.ascx.cs (the page that tries to read the text from the 
file) 
/orderforms/<one of multiple pages execute the above class here or in a sub directory 
/orderforms/email_templates/file_to_include.txt 
/orderforms/email_templates/file_to_include2.txt 

Co ścieżka i funkcji należy użyć, aby przeczytać całą zawartość pliku do łańcucha?

Dzięki

+1

FYI, ilekroć ścieżka_url rozpoczyna się ukośnikiem ("/"), jest interpretowany przez aplikację jako strona ROOT, co oznacza, że ​​jest umieszczana natychmiast po nazwie domeny w celu utworzenia pełnego adresu URL. Różni się to od aplikacji użytkownika root, reprezentowanej przez znak "~" w aplikacji asp.net (po stronie serwera). Zasadniczo, app-root ma być taki sam jak site-root (gdy nie ma żadnych katalogów wirtualnych), ale także w środowiskach dev, ogólnie jest tam zaangażowany wirtualny katalog (gdy używany jest lokalny IIS), więc musisz być ostrożny z wiodącymi ukośnikami. –

+0

Mój poprzedni komentarz nie odnosi się bezpośrednio do twojego pytania, ale mam wrażenie, że musisz wiedzieć, co powiedziałem. –

Odpowiedz

24

Spróbuj:

string email = File.ReadAllText(Server.MapPath("~/orderforms/email_templates/file_to_include.txt")) 
+3

Aby to zrobić, musisz mieć HttpContext, aby to zrobić, musiałem to dodać. 'string email = File.ReadAllText (System.Web.HttpContext.Current.Server.MapPath (" ~/orderforms/email_templates/file_to_include.txt "));' – ferics2

Powiązane problemy