HttpRequest.MapPath Método

Definición

Asigna la ruta de acceso virtual de la dirección URL solicitada a una ruta de acceso física del servidor, correspondiente a la solicitud actual.Maps the virtual path in the requested URL to a physical path on the server for the current request.

Sobrecargas

MapPath(String)

Asigna la ruta de acceso virtual especificada a una ruta de acceso física.Maps the specified virtual path to a physical path.

MapPath(String, String, Boolean)

Asigna la ruta de acceso virtual especificada a una ruta de acceso física.Maps the specified virtual path to a physical path.

MapPath(String)

Asigna la ruta de acceso virtual especificada a una ruta de acceso física.Maps the specified virtual path to a physical path.

public:
 System::String ^ MapPath(System::String ^ virtualPath);
public string MapPath (string virtualPath);
member this.MapPath : string -> string
Public Function MapPath (virtualPath As String) As String

Parámetros

virtualPath
String

Ruta de acceso virtual (absoluta o relativa) de la solicitud actual.The virtual path (absolute or relative) for the current request.

Devoluciones

String

Ruta de acceso física del servidor especificado por virtualPath.The physical path on the server specified by virtualPath.

Excepciones

No hay objetos HttpContext definidos para la solicitud.No HttpContext object is defined for the request.

Ejemplos

En el ejemplo de código siguiente MapPath se usa el método para convertir una ruta de acceso virtual en una ruta de acceso física completa en el servidor.The following code example uses the MapPath method to convert a virtual path to a fully qualified physical path on the server. Este ejemplo tiene dos partes:This example has two parts:

  • Una página. aspx asigna la ruta de acceso, lee el archivo y muestra los resultados de la operación de lectura.An .aspx page maps the path, reads the file, and displays results of the read operation.

  • Una clase, UpperCaseFilterStream , que cambia todos los caracteres que se pasan a mayúsculas.A class, UpperCaseFilterStream, that changes all characters passed through it to uppercase.

La primera parte del ejemplo muestra cómo convertir una ruta de acceso virtual en una ruta de acceso física completa mediante el MapPath método.The first part of the example shows how to convert a virtual path to a fully qualified physical path using the MapPath method. A continuación, esta ruta de acceso física se pasa a un StreamReader objeto, que obtiene el contenido del archivo.This physical path is then passed to a StreamReader object, which obtains the contents of the file. WriteA continuación, se llama al método para mostrar el contenido del archivo en la página.The Write method is then called to display the content of the file on the page. La Filter propiedad se usa para adjuntar un filtro al flujo de respuesta que hace que el texto se muestre en la página todo en mayúsculas.The Filter property is used to attach a filter to the response stream that makes the text displayed to the page all uppercase.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ import Namespace="Samples.AspNet.CS.Controls"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {

      // Filter the text to be rendered as all uppercase.
      Response.Filter = new UpperCaseFilterStream(Response.Filter);

      // Convert a virtual path to a fully qualified physical path.
      string fullpath = Request.MapPath("~\\TestFile.txt");

      try
      {
        // Read the contents of the file using a StreamReader.
        using (StreamReader sr = new StreamReader(fullpath))
        while (sr.Peek() >= 0)
        {
          Response.Write((char)sr.Read());
        }
        Message.Text = "Reading the file was successful.";
        
      }
      catch (Exception ex)
      {
        Message.Text = "The process failed.";
      }    
     }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpResponse.MapPath Example</title>
  </head>
  <body>
    <form id="form1" runat="server">

      <asp:Label id="Message" 
                 runat="server"/>

    </form>
  </body>
</html>
<%@ Page Language="VB" Debug="true"%>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="Samples.AspNet.VB.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
     
  Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
      
    ' Filter the text to be rendered as all uppercase.
    Response.Filter = New UpperCaseFilterStream(Response.Filter)
    
    ' Convert a virtual path to a fully qualified physical path.
    Dim fullpath As String = Request.MapPath("~\\TestFile.txt")
    
    Try
      
      Dim sr As StreamReader = New StreamReader(fullpath)
      
      Do While sr.Peek() >= 0
        Response.Write(Convert.ToChar(sr.Read()))
      Loop
      sr.Close()
      Message.Text = "Reading the file was successful."
      
    Catch ex As Exception
      
      Message.Text = "The process failed."

    End Try

    
  End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpResponse.MapPath Example</title>
  </head>
  <body>
    <form id="Form1" runat="server">

      <asp:Label id="Message" 
                 runat="server"/>

    </form>
  </body>
</html>

En la segunda parte del ejemplo se muestra una clase que hereda de Stream y convierte todos los caracteres de una secuencia en mayúsculas.The second part of the example shows a class that inherits from Stream and converts all characters in a stream to uppercase. Coloque este código en la App_Code carpeta de la aplicación.Put this code in the App_Code folder for your application.


using System;
using System.IO;
using System.Text;

namespace Samples.AspNet.CS.Controls
{

   public class UpperCaseFilterStream : Stream
   // This filter changes all characters passed through it to uppercase.
   {
      private Stream strSink;
      private long lngPosition;

      public UpperCaseFilterStream(Stream sink)
      {
          strSink = sink;
      }

      // The following members of Stream must be overriden.
      public override bool CanRead
      {
         get { return true; }
      }

      public override bool CanSeek
      {
         get { return true; }
      }

      public override bool CanWrite
      {
         get { return true; }
      }

      public override long Length
      {
         get { return 0; }
      }

      public override long Position
      {
         get { return lngPosition; }
         set { lngPosition = value; }
      }

      public override long Seek(long offset, System.IO.SeekOrigin direction)
      {
         return strSink.Seek(offset, direction);
      }

      public override void SetLength(long length)
      {
         strSink.SetLength(length);
      }

      public override void Close()
      {
         strSink.Close();
      }

      public override void Flush()
      {
         strSink.Flush();
      }

      public override int Read(byte[] buffer, int offset, int count)
      {
         return strSink.Read(buffer, offset, count);
      }

      // The Write method actually does the filtering.
      public override void Write(byte[] buffer, int offset, int count)
      {
         byte[] data = new byte[count];
         Buffer.BlockCopy(buffer, offset, data, 0, count);
         string inputstring = Encoding.ASCII.GetString(data).ToUpper();
         data = Encoding.ASCII.GetBytes(inputstring);
         strSink.Write(data, 0, count);
      }
   }
}
Imports System.IO
Imports System.Text


Namespace Samples.AspNet.VB.Controls

    Public Class UpperCaseFilterStream
        Inherits Stream

        ' This filter changes all characters passed through it to uppercase.
        Private strSink As Stream
        Private lngPosition As Long


        Public Sub New(ByVal sink As Stream)
            strSink = sink
        End Sub

        ' The following members of Stream must be overriden.  
        Public Overrides ReadOnly Property CanRead() As Boolean
            Get
                Return True
            End Get
        End Property

        Public Overrides ReadOnly Property CanSeek() As Boolean
            Get
                Return True
            End Get
        End Property

        Public Overrides ReadOnly Property CanWrite() As Boolean
            Get
                Return True
            End Get
        End Property

        Public Overrides ReadOnly Property Length() As Long
            Get
                Return 0
            End Get
        End Property

        Public Overrides Property Position() As Long
            Get
                Return lngPosition
            End Get
            Set(ByVal value As Long)
                lngPosition = Value
            End Set
        End Property

        Public Overrides Function Seek( _
        ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
            Return strSink.Seek(offset, direction)
        End Function 'Seek


        Public Overrides Sub SetLength(ByVal length As Long)
            strSink.SetLength(length)
        End Sub


        Public Overrides Sub Close()
            strSink.Close()
        End Sub


        Public Overrides Sub Flush()
            strSink.Flush()
        End Sub


        Public Overrides Function Read( _
        ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
            Return strSink.Read(buffer, offset, count)
        End Function 'Read


        ' The Write method actually does the filtering.
        Public Overrides Sub Write( _
        ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)

            Dim data(count) As Byte
            System.Buffer.BlockCopy(buffer, offset, data, 0, count)
            Dim inputstring As String = Encoding.ASCII.GetString(data).ToUpper()
            data = Encoding.ASCII.GetBytes(InputString)
            strSink.Write(data, 0, count)

        End Sub

    End Class

End Namespace

Comentarios

Precaución

La MapPath propiedad puede contener información confidencial sobre el entorno de hospedaje.The MapPath property potentially contains sensitive information about the hosting environment. El valor devuelto no debe mostrarse a los usuarios.The return value should not be displayed to users.

Se aplica a

MapPath(String, String, Boolean)

Asigna la ruta de acceso virtual especificada a una ruta de acceso física.Maps the specified virtual path to a physical path.

public:
 System::String ^ MapPath(System::String ^ virtualPath, System::String ^ baseVirtualDir, bool allowCrossAppMapping);
public string MapPath (string virtualPath, string baseVirtualDir, bool allowCrossAppMapping);
member this.MapPath : string * string * bool -> string
Public Function MapPath (virtualPath As String, baseVirtualDir As String, allowCrossAppMapping As Boolean) As String

Parámetros

virtualPath
String

Ruta de acceso virtual (absoluta o relativa) de la solicitud actual.The virtual path (absolute or relative) for the current request.

baseVirtualDir
String

Ruta de acceso al directorio base virtual que se usa para una resolución relativa.The virtual base directory path used for relative resolution.

allowCrossAppMapping
Boolean

true para indicar que virtualPath puede pertenecer a otra aplicación; en caso contrario, false.true to indicate that virtualPath may belong to another application; otherwise, false.

Devoluciones

String

Ruta de acceso física del servidor.The physical path on the server.

Excepciones

allowCrossMapping es false y virtualPath pertenece a otra aplicación.allowCrossMapping is false and virtualPath belongs to another application.

o bien-or-

No hay objetos HttpContext definidos para la solicitud.No HttpContext object is defined for the request.

Comentarios

Precaución

La MapPath propiedad puede contener información confidencial sobre el entorno de hospedaje.The MapPath property potentially contains sensitive information about the hosting environment. El valor devuelto no debe mostrarse a los usuarios.The return value should not be displayed to users.

Se aplica a