none
Cambiar instrucción a Path.Combine RRS feed

  • Pergunta

  • Hola:

    Estoy tratando de cambiar todos los server.mappath de mis páginas a path.combine

    Tengo

    For Each strfoundfile In My.Computer.FileSystem.GetFiles(Server.MapPath("../../Temporal/"), Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.*")
                fi = New FileInfo(strfoundfile)
                fi.Delete()
            Next

    ¿Cómo sería la instrucción con Path.Combine?

    Muchísimas gracias por la ayuda.

    PD: la ruta física es c:\inepub\wwwroot\Temporal
    • Editado volar.2016 quarta-feira, 19 de fevereiro de 2020 12:23
    quarta-feira, 19 de fevereiro de 2020 12:22

Respostas

  • hola

    >>Leí que en el .NET core 3.1 no se usa server.mappath.

    Pero estas usando .net core 3.1? porque se supone que esto debes mencionarlo cuando planteas la pregunta, no somos adivino sino lo explicas

    dime en que lugar mencionaste que estas migrando a net core?

    >>Mi idea es poner la variable en el web.config, y llamarla desde las páginas.

    web.config de verdad, eso en .net core no existe, de verdad estas migrando a net core?

    Sino sigue lo que explican en el sitio variablenotfound, inyecta el IHostingEnvironment y obtienes de este la ruta fisica del root del sitio


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Sugerido como Resposta Pablo RubioModerator quinta-feira, 20 de fevereiro de 2020 15:42
    • Marcado como Resposta volar.2016 quinta-feira, 27 de fevereiro de 2020 15:00
    quarta-feira, 19 de fevereiro de 2020 18:47

Todas as Respostas

  • Hola, Server.MapPath() devuelve la ruta de acceso física del archivo correspondiente a la ruta de acceso virtual especificad, es decir, dentro del contexto de tu aplicación web.

    Tu aplicación NO debería acceder a rutas que no estuvieran dentro de su directorio de publicación. Puedes poner un ejemplo de lo que quieres conseguir? 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    quarta-feira, 19 de fevereiro de 2020 13:13
    Moderador
  • hola

    >>Estoy tratando de cambiar todos los server.mappath de mis páginas a path.combine

    no eso es incorrecto, en un ambiente web el Server.MapPath() lo tienes que usar siempre para descubrir la ruta fisica que puede ser diferente de un hosting a otro

    aunque puedes usar el ~/ para definir la ruta desde el root del sitio web, o sea

    string tempFolder = Server.MapPath("~/Temporal/");

    >>¿Cómo sería la instrucción con Path.Combine?

    en el codigo que nos muestras no aplica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    quarta-feira, 19 de fevereiro de 2020 13:24
  • Hola de nuevo:

    Leí que en el .NET core 3.1 no se usa server.mappath.

    Por eso quiero pasar los server.mappath a path.combine. Para migrar a .NET core.

    Yo puse

                Dim strdtemporal As String = "c:\inetpub\wwwroot\Temporal"
    For Each strfoundfile In My.Computer.FileSystem.GetFiles(Path.Combine(strdtemporal), Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.*") fi = New FileInfo(strfoundfile) fi.Delete() Next


    Al ejemplo que puse en mi anterior mensaje

    Sé que la ruta física cambia de un servidor a otro. En caso de irme a otro servidor, cambio la ruta. Sólo se producirá cuando publique las páginas web.

    Mi idea es poner la variable en el web.config, y llamarla desde las páginas.

    Muchísimas gracias por la ayuda.

    PD: este es el artículo

    https://www.variablenotfound.com/2017/10/donde-esta-servermappath-en-aspnet-core.html




    • Editado volar.2016 quarta-feira, 19 de fevereiro de 2020 16:19
    quarta-feira, 19 de fevereiro de 2020 16:10
  • Hola. Si te fijas en el artículo hace referencia al ensamblado Microsoft.AspnetCore.Hosting para poder manejar el Web el WebRootPath.con esto e inyectando en el constructor digamos del controlador un IHostingEnvironment accedes a dicha propiedad. El WebRootPath puedes modificarlo en el Program.cs como ejemplo usando UseWebRoot

    using Microsoft.AspNetCore.Hosting;
    using System.IO;
    
    namespace IHostingEnvironmentExample
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                var host = new WebHostBuilder()
                    .UseKestrel()
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    .UseWebRoot("www")
                    .UseIISIntegration()
                    .UseStartup<Startup>()
                    .Build();
    
                host.Run();
            }
        }
    }


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    quarta-feira, 19 de fevereiro de 2020 17:22
    Moderador
  • hola

    >>Leí que en el .NET core 3.1 no se usa server.mappath.

    Pero estas usando .net core 3.1? porque se supone que esto debes mencionarlo cuando planteas la pregunta, no somos adivino sino lo explicas

    dime en que lugar mencionaste que estas migrando a net core?

    >>Mi idea es poner la variable en el web.config, y llamarla desde las páginas.

    web.config de verdad, eso en .net core no existe, de verdad estas migrando a net core?

    Sino sigue lo que explican en el sitio variablenotfound, inyecta el IHostingEnvironment y obtienes de este la ruta fisica del root del sitio


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Sugerido como Resposta Pablo RubioModerator quinta-feira, 20 de fevereiro de 2020 15:42
    • Marcado como Resposta volar.2016 quinta-feira, 27 de fevereiro de 2020 15:00
    quarta-feira, 19 de fevereiro de 2020 18:47
  • Hola:

    No he empezado aún a migrar a .NET core.

    De momento estoy cambiando algunas instrucciones que no existen en .NET core, como server.mappath

    Veo que no existe web.config y global.asax.

    Muchísimas gracias.

    quinta-feira, 27 de fevereiro de 2020 15:03