Freigeben über


HttpRequest.MapPath Methode

Definition

Ordnet den virtuellen Pfad in der angeforderten URL einem physischen Pfad auf dem Server für die aktuelle Anforderung zu.

Überlädt

Name Beschreibung
MapPath(String)

Ordnet den angegebenen virtuellen Pfad einem physischen Pfad zu.

MapPath(String, String, Boolean)

Ordnet den angegebenen virtuellen Pfad einem physischen Pfad zu.

MapPath(String)

Ordnet den angegebenen virtuellen Pfad einem physischen 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 virtuelle Pfad (absolut oder relativ) für die aktuelle Anforderung.

Gibt zurück

Der physische Pfad auf dem server, der durch virtualPath.

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. Dieses Beispiel enthält zwei Teile:

  • Eine .aspx Seite ordnet den Pfad zu, liest die Datei und zeigt Ergebnisse des Lesevorgangs an.

  • Eine Klasse, UpperCaseFilterStreamdie alle Darin übergebenen Zeichen in Großbuchstaben ändert.

Der erste Teil des Beispiels zeigt, 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, mit dem der Text auf der Seite in Großbuchstaben angezeigt wird.

<%@ 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 von Stream allen Zeichen in einem Datenstrom erbt und in Großbuchstaben 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

Vorsicht

Die MapPath Methode enthält potenziell vertrauliche Informationen über die Hostingumgebung. Der Rückgabewert sollte benutzern nicht angezeigt werden.

Gilt für:

MapPath(String, String, Boolean)

Ordnet den angegebenen virtuellen Pfad einem physischen 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 virtuelle Pfad (absolut oder relativ) für die aktuelle Anforderung.

baseVirtualDir
String

Der virtuelle Basisverzeichnispfad, der für die relative Auflösung verwendet wird.

allowCrossAppMapping
Boolean

true um anzugeben, dass virtualPath dies zu einer anderen Anwendung gehören kann; andernfalls false.

Gibt zurück

Der physische Pfad auf dem Server.

Ausnahmen

allowCrossMapping ist false und virtualPath gehört zu einer anderen Anwendung.

- oder -

Für die Anforderung ist kein HttpContext Objekt definiert.

Hinweise

Vorsicht

Die MapPath Methode enthält potenziell vertrauliche Informationen über die Hostingumgebung. Der Rückgabewert sollte benutzern nicht angezeigt werden.

Gilt für: