ASP.NET MVC2: Onde posso armazenar um arquivo para poder acessá -lo na minha caixa de dev e na produção?
-
24-09-2019 - |
Pergunta
Preciso armazenar um arquivo, de modo que meu aplicativo ASP.NET MVC possa acessar o arquivo, tanto quando eu executar o site no Visual Studio e quando o servidor de produção está realmente em execução. Eu não acho que posso fazer um caminho relativo na minha caixa de dev, porque o caminho de execução é algo na pasta System32. Não sei se o mesmo é verdadeiro no servidor, mas de qualquer maneira, um caminho absoluto não é uma opção.
Existe uma maneira de me referir a esse arquivo no código, que funcionará para minha caixa de desenvolvimento e meu servidor de produção?
Solução
Se você pode armazenar o arquivo na hierarquia do aplicativo, pode fazer isso:
Server.MapPath("~/path/to/file")
Como alternativa, você pode obter o caminho da montagem atualmente em execução como assim:
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
E construa seu caminho relativo a partir disso.
Outras dicas
Experimente uma subpasta do:
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData))