Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    web.config customErrors È possibile passare il percorso della pagina mancante?

    Ciao,

    premetto che conosco pochissimissimo ASP.NET ma ho necessità di utilizzare i customErrors tramite un semplice file web.config.

    Il file web.config contiene
    codice:
    <configuration>
        <system.web>
            <customErrors mode="RemoteOnly" defaultRedirect="errorpage.aspx" redirectMode="ResponseRewrite" />
        </system.web>
    </configuration>
    È possibile passare alla pagina di errore il percorso della pagina mancante come parametro? qualcosa tipo defaultRedirect="errorpage.aspx?path=$percorso" ?

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    se intendi ricavare lurl che ha generato l'errore viene passato in automatico nella querystring chiave aspxerrorpath. Oppure dicci cosa dovrebbe essere percorso

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Nella pagina di errore Errorpage.aspx.cs:

    codice:
            protected void Page_Load(object sender, EventArgs e)
            {
               if (Request.QueryString["aspxerrorpath"] != null)
                {              
                        string nomePagina = string.Empty;
                        string[] path_errore = Request.QueryString["aspxerrorpath"].ToString().Split('/');
                        nomePagina = path_errore[path_errore.Length - 1].ToString();
                        lbErrore.Text = "Si è verificato un errore nell'applicazione. Pagina: " + nomePagina + ".";
                 }
             }
    dovrebbe funzionare anche:
    codice:
          string nomePagina = Request.Url.Segments[Request.Url.Segments.Length - 1];

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ma mi viene un dubbio.

    vuoi segnalare una pagina digitata nella barra, che non esiste nell'applicativo (404) ?

  5. #5
    Ciao!

    Grazie delle risposte.

    Allora ho aggirato bovinamente il problema semplicemente usando Request.ServerVariables("URL") nella pagina di arrivo (errorpage.aspx) che è in realtà una banale pagina in Classic ASP (mi scuso per non averlo detto!! ).

    Questa soluzione mi permette di ottenere in modo semplice ed efficace l'URL rewriting su hosting Aruba (e che ce voi fa ...).

    Partendo dal fatto che su Aruba praticamente l'URL rewriting per bene non si può fare (e comunque funziona solo per pagina .aspx), l'idea originale era sfruttare customErrors intercettando il pattern del link della pagina mancante e deassemblarlo per poi passarlo come variabili (l'id della pagina, il permalink, la categoria...). Mi sembra però di capire che questo non è possibile con customErrors

    Però la soluzione che ho adottato, quindi tramite Request.ServerVariables("URL") o anche Request.ServerVariables("SCRIPT_NAME") sembrano fare ciò che mi serve

    Inoltre ho notato che con il codice che ho postato la variabile aspxerrorpath non viene passata, questo perché utilizzo
    codice:
    redirectMode="ResponseRewrite"


    Sarebbe stato possibile passare le variabili nel link in customErrors?

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Da una vecchia applicazione, nel Global.asax, [VB.Net]:

    codice:
    Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
            ' Generato ad ogni richiesta 
            ' (Si puo' fare anche eleggendo la pagina designata all'errore -404- in IIS)
    
            Dim nomefile As String
            Dim URLCompleto As String
            Dim partiURL() As String
    
            URLCompleto = Request.Path.ToLower()
            partiURL = URLCompleto.Split("/")
            nomefile = partiURL(UBound(partiURL))
    
            ' Se non esiste il file richiesto...
            If File.Exists(Server.MapPath(nomefile)) = False Then
                Response.Redirect("\notfound.aspx?pagina_richiesta=" & nomefile)
            End If
    End Sub
    e poi nella pagina notfound.aspx

    codice:
    Reponse.write(Request.Querystring("pagina_richiesta") & " ... non esiste, sorry !")

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.