.net - obtener - url.content c#




ASP.NET MVC-Encuentre la ruta absoluta a la carpeta App_Data desde el controlador (5)

ASP.NET MVC1 -> MVC3

string path = HttpContext.Current.Server.MapPath("~/App_Data/somedata.xml");

ASP.NET MVC4

string path = Server.MapPath("~/App_Data/somedata.xml");

Referencia de MSDN:

Método HttpServerUtility.MapPath

¿Cuál es la forma correcta de encontrar la ruta absoluta a la carpeta App_Data desde un controlador en un proyecto MVC de ASP.NET? Me gustaría poder trabajar temporalmente con un archivo .xml y no quiero codificar la ruta.

Esto no funciona:

[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        string path = VirtualPathUtility.ToAbsolute("~/App_Data/somedata.xml");

        //.... do whatever 

        return View();
    }

}

Creo que fuera del contexto web VirtualPathUtility.ToAbsolute () no funciona. la ruta de la cadena vuelve como "C: \ App_Data \ somedata.xml"

¿Dónde debo determinar la ruta del archivo .xml en una aplicación MVC? ¿Global.asax y pegarlo una variable de nivel de aplicación?


Intento acostumbrarme a usar HostingEnvironment lugar de Server ya que también funciona dentro del contexto de los servicios WCF.

 HostingEnvironment.MapPath(@"~/App_Data/PriceModels.xml");

Phil Haak tiene un ejemplo que creo que es un poco más estable cuando se trata de rutas con separadores de directorios al estilo "\". También maneja con seguridad la concatenación del camino. Viene gratis en System.IO

var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);

Sin embargo, también puede probar "AppDomain.CurrentDomain.BaseDirector" en lugar de "Server.MapPath".


string Index = i;
            string FileName = "Mutton" + Index + ".xml";
            XmlDocument xmlDoc = new XmlDocument();

            var path = Path.Combine(Server.MapPath("~/Content/FilesXML"), FileName);
            xmlDoc.Load(path); // Can use xmlDoc.LoadXml(YourString);

Esta es la mejor solución para obtener el camino que es exactamente necesario por ahora.


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

Esta es la forma más "correcta" de conseguirlo.





absolute-path