c# asp.net .net

c# - Obtener la ruta de la carpeta temporal ASP.NET



(5)

Creo que esto debería ayudar ...

Hay una sección en web.config/machine.config debajo de la compilation tag donde la ruta se establece de forma predeterminada. Aquí están los atributos de la sección ...

Documentacion aqui

Desde mi código C #, que no se ejecuta desde IIS / ASP.NET, necesito agregar permisos de cuenta de usuario a la carpeta temporal ASP.NET. (Se requiere al agregar mi sitio a IIS). La carpeta en mi sistema local es:

C: / Windows / Microsoft.NET / Framework64 / v4.0.30319 / Archivos temporales de ASP.NET

Odiaría codificar este camino en mi código, así que me preguntaba si puedo recuperarlo desde el propio framework .NET.


Hmm No sabía que sería tan complicado. Por falta de una mejor respuesta, pude encontrar algo como esto:

using System.Runtime.InteropServices; string net_base = Path.GetFullPath(Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), @"../..")); string strTemp32 = string.Concat(net_base, @"/Framework/", RuntimeEnvironment.GetSystemVersion(), @"/Temporary ASP.NET Files"); string strTemp64 = string.Concat(net_base, @"/Framework64/", RuntimeEnvironment.GetSystemVersion(), @"/Temporary ASP.NET Files");

Obviamente, hay dos carpetas temporales: para procesos de 32 y 64 bits. Se basa en este ejemplo y también se basa en el assumption que las carpetas temporales predeterminadas de ASP.NET están hard-coded .

Corrigeme, si encuentras una manera mejor?


Intente System.Web.HttpRuntime.CodegenDir para obtener la ruta física del directorio donde se almacenan los archivos temporales de ASP.NET para la aplicación actual.


Manera más sencilla con validación:

if (file.ContentLength > 0) { string temp = Path.GetTempPath(); var path = Path.Combine(temp, fileName); file.SaveAs(path); }

y en web.config:

<system.web> <compilation tempDirectory="D:/MyTempFiles" /> </system.web>


Mucho más seguro será si usa su propia carpeta temporal, por ejemplo, en App_Data

Desafortunadamente Path.GetTempPath(); no devolverá esta carpeta porque es una carpeta interna asp.net.

La buena noticia es que puede cambiarlo especificando la ubicación del archivo en web.config con elemento.