HttpRequest.MapPath Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
Sobrecargas
MapPath(String) |
Asigna la ruta de acceso virtual especificada a una ruta de acceso física. |
MapPath(String, String, Boolean) |
Asigna la ruta de acceso virtual especificada a una ruta de acceso física. |
MapPath(String)
Asigna la ruta de acceso virtual especificada a una ruta de acceso física.
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.
Devoluciones
Ruta de acceso física del servidor especificado por virtualPath
.
Excepciones
No hay objetos HttpContext definidos para la solicitud.
Ejemplos
En el ejemplo de código siguiente se usa el MapPath método para convertir una ruta de acceso virtual a una ruta de acceso física completa en el servidor. Este ejemplo tiene dos partes:
Una página .aspx asigna la ruta de acceso, lee el archivo y muestra los resultados de la operación de lectura.
Clase ,
UpperCaseFilterStream
, que cambia todos los caracteres pasados a mayúsculas.
La primera parte del ejemplo muestra cómo convertir una ruta de acceso virtual a una ruta de acceso física completa mediante el MapPath método . A continuación, esta ruta de acceso física se pasa a un StreamReader objeto , que obtiene el contenido del archivo. A Write continuación, se llama al método para mostrar el contenido del archivo en la página. La Filter propiedad se usa para adjuntar un filtro a la secuencia de respuesta que hace que el texto se muestre en la página en mayúsculas.
<%@ 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>
La segunda parte del ejemplo muestra una clase que hereda de Stream y convierte todos los caracteres de una secuencia en mayúsculas. Coloque este código en la carpeta de la App_Code
aplicación.
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. El valor devuelto no debe mostrarse a los usuarios.
Se aplica a
MapPath(String, String, Boolean)
Asigna la ruta de acceso virtual especificada a una ruta de acceso física.
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.
- baseVirtualDir
- String
Ruta de acceso al directorio base virtual que se usa para una resolución relativa.
- allowCrossAppMapping
- Boolean
true
para indicar que virtualPath
puede pertenecer a otra aplicación; en caso contrario, false
.
Devoluciones
Ruta de acceso física del servidor.
Excepciones
allowCrossMapping
es false
y virtualPath
pertenece a otra aplicación.
o bien
No hay objetos HttpContext definidos para la solicitud.
Comentarios
Precaución
La MapPath propiedad puede contener información confidencial sobre el entorno de hospedaje. El valor devuelto no debe mostrarse a los usuarios.