2015-07-23 4 views
11

Próbowałem aplikacji ASP.NET5 MVC6. W poprzedniej wersji był katalog App_Data. Użyłem tego folderu do przechowywania dzienników błędów. Ale nie znaleziono go w najnowszej wersji. Jakaś pomoc?Katalog App_Data w ASP.NET5 MVC6

Odpowiedz

12

myślę oddanie App_Data pod wwwroot jest złym pomysłem. W asp.net 5 kiedy publikujemy/wdrażamy otrzymujemy 2 foldery approot i wwwroot. Wszystkie pliki, które nie będą obsługiwane przez żądania http, nie powinny znajdować się pod wwwroot. Byłoby lepiej dla rzeczy, które wcześniej byłyby pod folderem App_Data, aby żyć gdzieś w ramach podejścia. Ten related question of how to access files from approot should be of help

+4

pamiętać, że 'AppDomain .CurrentDomain.GetData ("DataDirectory") 'nadal będzie zwracać' wwwroot \ App_Data', chyba że go zmienisz – jltrem

10

Katalog App_Data nadal może być używany w ASP.NET 5, po prostu nie jest tworzony domyślnie. Wygeneruj pod wwwroot. Jest to ścieżka zwrócony przez AppDomain.CurrentDomain.GetData("DataDirectory").ToString()

Jeśli chcesz użyć innego DataDirectory następnie należy zadzwonić SetData:

public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) 
    { 
    string baseDir = appEnv.ApplicationBasePath; 
    AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(baseDir, "myAppData")); 
4

Działa to dla ASP.NET MVC z rdzeniem 2

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
// Use this code if you want the App_Data folder to be in wwwroot 
//string baseDir = env.WebRootPath; 

// Use this if you want App_Data off your project root folder 
string baseDir = env.ContentRootPath; 

AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(baseDir, "App_Data")); 
} 

// Umieść ten kod, gdzie jest to potrzebne, aby dostać folder App_Data

string dataDir = AppDomain.CurrentDomain.GetData("DataDirectory").ToString();