2015-08-26 11 views
8

Chcę określić ścieżkę do pliku w mojej aplikacji w pliku Web.Config, a następnie wywołać tę ścieżkę w kontrolerze. Z tego, co udało mi się znaleźć w Internecie, jestem na najlepszej drodze.ASP.NET Względna ścieżka do pliku w Web.Config

Web.Config

<appSettings> 
    <add key="filePath" value= "~/App_Data/Physicians.xml" /> 
</appSettings> 

Controller

//Path of the document  
string xmlData = ConfigurationManager.AppSettings["filePath"].ToString(); 

to jednak wskazuje na niewłaściwym miejscu.

enter image description here

Jak mogę wskazać to w pliku Mam przechowywane w folderze App_Data, począwszy od korzenia mojego wniosku?

Odpowiedz

17

Możesz użyć Server.MapPath.

Lub alternatywnie, przechowywać jedynie względna ścieżka do pliku konfiguracyjnego, a następnie użyć:

<appSettings> 
    <add key="filePath" value= "App_Data/Physicians.xml" /> 
</appSettings> 

string relativePath = ConfigurationManager.AppSettings["filePath"]; 
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath) 

Ta ostatnia technika będzie pracować w aplikacjach internetowych nie, więc jest chyba lepiej.

+0

Czy mógłbyś trochę bardziej szczegółowo się nad tym zastanowić? Mówisz, że zostawiam część Web.Config sam? Czy możesz napisać, jak wykonać to połączenie w kontrolerze? Nie widzę, w jaki sposób użyłbym twojego przykładu Path.Combine z tym, co mam, lub gdybym miał zastąpić to wszystko. – madvora

+0

relativePath będzie częścią, którą przechowujesz w swoim Web.Config. Możesz usunąć tyldę ze swojej ścieżki, a następnie przejść coś w stylu var relativePath = ConfigurationManager.AppSettings ["filePath"] ToString(), a następnie użyj Path.Combine (AppDomain.CurrentDomain.BaseDirectory, relativePath) – Dylan

Powiązane problemy