HttpRequest.MapPath Metodo

Definizione

Associa il percorso virtuale presente nell'URL richiesto a un percorso fisico sul server per la richiesta corrente.Maps the virtual path in the requested URL to a physical path on the server for the current request.

Overload

MapPath(String)

Associa il percorso virtuale specificato a un percorso fisico.Maps the specified virtual path to a physical path.

MapPath(String, String, Boolean)

Associa il percorso virtuale specificato a un percorso fisico.Maps the specified virtual path to a physical path.

MapPath(String)

Associa il percorso virtuale specificato a un percorso fisico.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

Parametri

virtualPath
String

Percorso virtuale, assoluto o relativo, della richiesta corrente.The virtual path (absolute or relative) for the current request.

Restituisce

Percorso fisico sul server specificato da virtualPath.The physical path on the server specified by virtualPath.

Eccezioni

Non è stato definito alcun oggetto HttpContext per la richiesta.No HttpContext object is defined for the request.

Esempi

Nell'esempio di codice seguente viene MapPath usato il metodo per convertire un percorso virtuale in un percorso fisico completo nel server.The following code example uses the MapPath method to convert a virtual path to a fully qualified physical path on the server. Questo esempio è costituito da due parti:This example has two parts:

  • Una pagina aspx esegue il mapping del percorso, legge il file e Visualizza i risultati dell'operazione di lettura.An .aspx page maps the path, reads the file, and displays results of the read operation.

  • Classe, UpperCaseFilterStream, che modifica tutti i caratteri passati in maiuscolo.A class, UpperCaseFilterStream, that changes all characters passed through it to uppercase.

Nella prima parte dell'esempio viene illustrato come convertire un percorso virtuale in un percorso fisico completo utilizzando il MapPath metodo.The first part of the example shows how to convert a virtual path to a fully qualified physical path using the MapPath method. Questo percorso fisico viene quindi passato a un StreamReader oggetto, che ottiene il contenuto del file.This physical path is then passed to a StreamReader object, which obtains the contents of the file. Viene Write quindi chiamato il metodo per visualizzare il contenuto del file nella pagina.The Write method is then called to display the content of the file on the page. La Filter proprietà viene utilizzata per alleghi un filtro al flusso di risposta che rende il testo visualizzato nella pagina in maiuscolo.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>

Nella seconda parte dell'esempio viene illustrata una classe che eredita Stream da e converte tutti i caratteri di un flusso in maiuscolo.The second part of the example shows a class that inherits from Stream and converts all characters in a stream to uppercase. Inserire questo codice nella App_Code cartella dell'applicazione.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

Commenti

Attenzione

La MapPath proprietà contiene potenzialmente informazioni riservate sull'ambiente host.The MapPath property potentially contains sensitive information about the hosting environment. Il valore restituito non deve essere visualizzato agli utenti.The return value should not be displayed to users.

MapPath(String, String, Boolean)

Associa il percorso virtuale specificato a un percorso fisico.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

Parametri

virtualPath
String

Percorso virtuale, assoluto o relativo, della richiesta corrente.The virtual path (absolute or relative) for the current request.

baseVirtualDir
String

Percorso della directory virtuale di base utilizzato per la risoluzione relativa.The virtual base directory path used for relative resolution.

allowCrossAppMapping
Boolean

true per indicare che virtualPath può appartenere a un'altra applicazione; in caso contrario, false.true to indicate that virtualPath may belong to another application; otherwise, false.

Restituisce

Percorso fisico sul server.The physical path on the server.

Eccezioni

allowCrossMapping è false e virtualPath appartiene a un'altra applicazione.allowCrossMapping is false and virtualPath belongs to another application.

-oppure--or- Non è stato definito alcun oggetto HttpContext per la richiesta.No HttpContext object is defined for the request.

Commenti

Attenzione

La MapPath proprietà contiene potenzialmente informazioni riservate sull'ambiente host.The MapPath property potentially contains sensitive information about the hosting environment. Il valore restituito non deve essere visualizzato agli utenti.The return value should not be displayed to users.

Si applica a