2015-08-26 19 views
8

Tôi muốn chỉ định đường dẫn đến tệp trong ứng dụng của tôi trong tệp Web.Config, sau đó gọi đường dẫn đó trong bộ điều khiển. Từ những gì tôi đã tìm thấy trực tuyến, tôi là hầu hết các con đường ở đó.Đường dẫn tương đối ASP.NET để tệp trong Web.Config

Web.Config

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

khiển

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

Tuy nhiên, điều này được trỏ đến vị trí sai.

enter image description here

Làm thế nào tôi có thể chỉ này đến tập tin tôi đã được lưu trữ trong thư mục App_Data, bắt đầu từ thư mục gốc của ứng dụng của tôi?

Trả lời

17

Bạn có thể sử dụng Server.MapPath.

Hoặc cách khác, cửa hàng chỉ đường dẫn tương đối trong file cấu hình, sau đó sử dụng:

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

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

Kỹ thuật sau sẽ làm việc trong các ứng dụng phi web, do đó được cho là tốt hơn.

+0

Bạn có muốn xây dựng điều này nhiều hơn một chút không? Bạn có nói rằng tôi rời khỏi phần Web.Config một mình không? Bạn có thể viết ra làm thế nào bạn sẽ thực hiện cuộc gọi này trong bộ điều khiển? Tôi không thấy làm thế nào tôi sẽ sử dụng ví dụ Path.Combine của bạn với những gì tôi có, hoặc nếu tôi là nghĩa vụ phải thay thế tất cả điều đó. – madvora

+0

relativePath sẽ là phần mà bạn lưu trữ trong Web.Config của bạn. Bạn sẽ loại bỏ tilda khỏi đường dẫn của bạn và sau đó đi một cái gì đó như var relativePath = ConfigurationManager.AppSettings ["filePath"]. ToString() và sau đó sử dụng Path.Combine (AppDomain.CurrentDomain.BaseDirectory, relativePath) – Dylan

Các vấn đề liên quan