Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo HttpRequest.MapPath (String)

 

Data di pubblicazione: ottobre 2016

Esegue il mapping del percorso virtuale specificato a un percorso fisico.

Spazio dei nomi:   System.Web
Assembly:  System.Web (in System.Web.dll)

public string MapPath(
	string virtualPath
)

Parametri

virtualPath
Type: System.String

Percorso virtuale, assoluto o relativo, della richiesta corrente.

Valore restituito

Type: System.String

Percorso fisico sul server specificato da virtualPath.

Exception Condition
HttpException

Non è stato definito alcun oggetto HttpContext per la richiesta.

System_CAPS_cautionAttenzione

Il MapPath proprietà potenzialmente contiene informazioni riservate sull'ambiente di hosting. Il valore restituito non deve essere visualizzato agli utenti.

Nell'esempio di codice viene illustrato come utilizzare il MapPath metodo per convertire un percorso virtuale in un percorso fisico completo sul server. L'esempio include due parti:

  • Una pagina aspx associa il percorso, legge il file e visualizza i risultati dell'operazione di lettura.

  • Una classe, UpperCaseFilterStream, che converte tutti i caratteri passati in lettere maiuscole.

La prima parte dell'esempio viene illustrato come convertire un percorso virtuale in un percorso fisico completo utilizzando il MapPath metodo. Il percorso fisico viene quindi passato a un StreamReader oggetto, che ottiene il contenuto del file. Il Write viene quindi chiamato il metodo per visualizzare il contenuto del file della pagina. Il Filter proprietà viene utilizzata per collegare un filtro per il flusso di risposta che il testo visualizzato nella pagina di tutte le lettere maiuscole.

<%@ 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>

La seconda parte dell'esempio viene illustrata una classe che eredita da Stream e converte tutti i caratteri in un flusso in maiuscolo. Inserire il codice nel App_Code cartella dell'applicazione.


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);

      }
   }
}

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: