Salve a tutti . Sapete dirmi dove posso trovare un esempio sugli url rewriting in asp.net?
Ho trovato qualcosa ma in c# ed io non ci capisco poco.
Salve a tutti . Sapete dirmi dove posso trovare un esempio sugli url rewriting in asp.net?
Ho trovato qualcosa ma in c# ed io non ci capisco poco.
puoi convertire il codice da c# in vb
http://www.developerfusion.co.uk/uti...sharptovb.aspx
I got the remedy
ho trovato questa soluzione che però mi da errore nel web config per il nome dell' assembly del progetto . Lo stesso accade se modifico nome_assembly_progetto con Assemblyinfo.vb o solo Assemblyinfo
abbreviare l'url di una nostra pagina:
www.nomesito.xxx/articolo.aspx?codice=001
E volevamo utilizzare per chiamare ancora questa pagina l'url più semplice:
www.nomesito.xxx/articolo001.aspx
Innanzitutto è necessario modificare il web.config aggiungendo questa sezione:
<httpHandlers>
<add verb="*" path="articolo*.aspx" type="MyChangeUrl,Nome_assembly_Progetto" />
</httpHandlers>
Quindi si deve creare una nuova classe che implementi l'interfaccia IHttpHandlerFactory:
Public Class MyChangeUrl
Implements IHttpHandlerFactory
Public Function GetHandler(ByVal context As HttpContext, ByVal requestType As String, ByVal url As String, ByVal path As String) As IHttpHandler Implements IHttpHandlerFactory.GetHandler
Dim pagina As String = context.Request.MapPath("articolo.aspx")
Return PageParser.GetCompiledPageInstance(url, pagina, context)
End Function
Public Sub ReleaseHandler(ByVal handler As IHttpHandler) Implements IHttpHandlerFactory.ReleaseHandler
End Sub
End Class
Adesso ogni pagina richiamata dal browser nel formato "articolo*.aspx" sarà reindirizzata ad "articolo.aspx"
Rimane il problema di prendere il codice dell'articolo interessato visto che esso non sarà più presente nella collection Request. Per far questo dobbiamo modificare la pagina "articolo.aspx" in modo che cerchi il parametro interessato direttamente dall'interno dell'URL:
sub Page_Load()
dim codice as string
codice=System.IO.Path.GetFileNameWithoutExtension( Request.Path).Substring(8)
' substring per prendere dal 8 carattere in poi, cioè il codice
' senza il suffisso .aspx
codice=codice.Substring(0,codice.indexOf(".")-1)
...
end sub
il tutto è alla url
http://www.aspitalia.com/script/621/...-PostBack.aspx
girando e rovistando tutti i principali portali di informatica ho trovato questa soluziione che posto sperando che serva:
http://www.nomesito.xxx/articolo.aspx?codice=001
trasformabile in
http://www.nomesito.xxx/articolo001.aspx
modifica del global.asax, sfruttando l'evento Application_OnBeginRequest:
Sub Application_OnBeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim context As HttpContext = HttpContext.Current
Dim oldPath As String = context.Request.Path.ToLower()
Dim idx As Integer = oldPath.IndexOf("articolo")
If idx <> -1 Then
Dim fine As Integer = oldPath.IndexOf(".aspx")
Dim codice As String = oldPath.Substring(idx + 8, fine - (idx + 8))
context.RewritePath("articolo.aspx?codice=" + codice)
End If
End Sub
c'è un articolo sul url rewriting qui su html.it
I got the remedy