116 messaggi dal 03 febbraio 2002
Perchè quando faccio il Redirect ad un pagina non mantiene l'UrlEncode di una stringa?

Devo fare il Response.Redirect ad una pagina passandogli un parametro nell'url, e dato che non so che caratteri potrà avere questo paramento gli faccio prima l'UrlEncode. Ma la pagina che riceve nell'Url si ritrova il parametro senza UrlEncode, come era originariamente. Di conseguenza se questo parametro presenta caratteri come "/" o "&" o simili il Request.QueryString sbaglia a riceverlo.

E' come se il Response.Redirect facesse l'UrlDecode dell'indirizzo in automatico... non capisco
575 messaggi dal 06 settembre 2002
Contributi
esatto fa proprio ciò.
con il reflecto ho decompilato la classe e vedi:
Public Overloads Sub Redirect(ByVal url As String, ByVal endResponse As Boolean)
Begin Sub
Dim page1 As Page
If Me._headersWritten Then
Throw New HttpException(HttpRuntime.FormatResourceString("Cannot_redirect_after_headers_sent"))

End If
url = Me.ApplyAppPathModifier(url)
url = Me.ConvertToFullyQualifiedRedirectUrlIfRequired(url)
vedi chaima
url = Me.UrlEncodeRedirect(url)

Me.Clear
page1 = (Me._context.Handler AsType Page)
If (((Not (page1) Is Nothing) AndAlso page1.IsPostBack) AndAlso page1.SmartNavigation) Then
Me.Write("<BODY><ASP_SMARTNAV_RDIR url="")
Me.Write(url)
Me.Write(""></ASP_SMARTNAV_RDIR>")
If page1.SmartNavigationIE50 Then
Me.Write(page1.GetClientScriptFileIncludeScript("JScript", "SmartNavIE5.js"))

End If
Me.Write("</BODY>")

Else
Me.StatusCode = 302
Me._redirectLocation = url
Me.Write("<html><head><title>Object moved</title></head><body> ")
Me.Write(String.Concat("<h2>Object moved to <a href='", url, "'>here</a>.</h2> "))
Me.Write("</body></html> ")

End If
If endResponse Then
Me.End

End If

End Sub

e urlencode è fatta così
Private Function UrlEncodeRedirect(ByVal url As String) As String
Begin Function
Dim num1 As Integer
Dim encoding1 As Encoding
num1 = url.IndexOf(63)
If (num1 >= 0) Then
encoding1 = IIf((Not (Me.Request) Is Nothing), Me.Request.ContentEncoding, Me.ContentEncoding)
url = String.Concat(HttpUtility.UrlEncodeSpaces(HttpUtility.UrlEncodeNonAscii(url.Substring(0, num1), Encoding.UTF8)), HttpUtility.UrlEncodeNonAscii(url.Substring(num1), encoding1))

Else
url = HttpUtility.UrlEncodeSpaces(HttpUtility.UrlEncodeNonAscii(url, Encoding.UTF8))

End If
Return url
End Function
ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.