HttpRequest.MapPath Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ordnet dem physischen Pfad auf dem Server den virtuellen Pfad in der angeforderten URL für die aktuelle Anforderung zu.
Überlädt
MapPath(String) |
Ordnet einem physischen Pfad den angegebenen virtuellen Pfad zu. |
MapPath(String, String, Boolean) |
Ordnet einem physischen Pfad den angegebenen virtuellen Pfad zu. |
MapPath(String)
Ordnet einem physischen Pfad den angegebenen virtuellen Pfad zu.
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
Parameter
- virtualPath
- String
Der absolute oder relative virtuelle Pfad für die aktuelle Anforderung.
Gibt zurück
Der physische Pfad auf dem durch virtualPath
angegebenen Server.
Ausnahmen
Für die Anforderung ist kein HttpContext-Objekt definiert.
Beispiele
Im folgenden Codebeispiel wird die MapPath Methode verwendet, um einen virtuellen Pfad in einen vollqualifizierten physischen Pfad auf dem Server zu konvertieren. In diesem Beispiel sind zwei Teile enthalten:
Auf einer ASPX-Seite werden der Pfad zugeordnet, die Datei gelesen und Ergebnisse des Lesevorgangs angezeigt.
Eine Klasse, die alle Zeichen ändert,
UpperCaseFilterStream
die sie in Großbuchstaben übergeben haben.
Im ersten Teil des Beispiels wird gezeigt, wie ein virtueller Pfad mithilfe der MapPath Methode in einen vollqualifizierten physischen Pfad konvertiert wird. Dieser physische Pfad wird dann an ein StreamReader Objekt übergeben, das den Inhalt der Datei abruft. Die Write Methode wird dann aufgerufen, um den Inhalt der Datei auf der Seite anzuzeigen. Die Filter Eigenschaft wird verwendet, um einen Filter an den Antwortdatenstrom anzufügen, der den Text auf der Seite alle Großbuchstaben anzeigt.
<%@ 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>
Der zweite Teil des Beispiels zeigt eine Klasse, die alle Zeichen in einem Datenstrom in Stream Großbuchstaben erbt und konvertiert. Fügen Sie diesen Code in den App_Code
Ordner für Ihre Anwendung ein.
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
Hinweise
Achtung
Die MapPath Eigenschaft enthält potenziell vertrauliche Informationen über die Hostingumgebung. Der Rückgabewert sollte nicht für Benutzer angezeigt werden.
Gilt für
MapPath(String, String, Boolean)
Ordnet einem physischen Pfad den angegebenen virtuellen Pfad zu.
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
Parameter
- virtualPath
- String
Der absolute oder relative virtuelle Pfad für die aktuelle Anforderung.
- baseVirtualDir
- String
Der virtuelle Pfad des Basisverzeichnisses, der für die Auflösung relativer Pfade verwendet wird.
- allowCrossAppMapping
- Boolean
true
gibt an, dass virtualPath
möglicherweise zu einer anderen Anwendung gehört, andernfalls false
.
Gibt zurück
Der physische Pfad auf dem Server.
Ausnahmen
allowCrossMapping
ist gleich false
und virtualPath
gehört zu einer anderen Anwendung.
- oder -
Für die Anforderung ist kein HttpContext-Objekt definiert.
Hinweise
Achtung
Die MapPath Eigenschaft enthält potenziell vertrauliche Informationen über die Hostingumgebung. Der Rückgabewert sollte nicht für Benutzer angezeigt werden.