68 messaggi dal 29 novembre 2002
Premetto che ho da poco iniziato a smanettare con ASP.NET dopo una lungo periodo dedicato alle Classic ASP.
Ho realizzato un semplice form con una listbox per provare i submit e gli autopostback. Ho notato che quando si richiama una pagina a volte (a me compare 1 volta ogni 3 submit) mi viene visualizzato fra le righe della mia pagina web la scritta:

Transfer-encoding: chunked2ab e uno 0 alla fine della pagina.

Come mai??? Mi sapete spiegare cos'è???

"Questo business è un organismo vivente in costante crescita dove vige la massima competizione. Non c'è spazio per l'ozio e concetture a posteriori. Ci sono nuove scoperte ogni ora, nuove idee pronte per essere divorate, ridefinite.
Nell'ambito del protocollo HTTP, il Transfer-Encoding riguarda la compressione e si riferisce a tutto il messaggio HTTP. Questa informazione è infatti contenuta nell'header del messaggio e può essere "chunked": vuol dire che il trasferimento avviene a pezzettini nel caso che la risposta sia lunga.

Estratto da RFC 2068 relativo a Hypertext Transfer Protocol -- HTTP/1.1

Transfer Codings

Transfer coding values are used to indicate an encoding transformation that has been, can be, or may need to be applied to an entity-body in order to ensure "safe transport" through the network. This differs from a content coding in that the transfer coding is a property of the message, not of the original entity.

transfer-coding         = "chunked" | transfer-extension


transfer-extension      = token


All transfer-coding values are case-insensitive. HTTP/1.1 uses transfer coding values in the Transfer-Encoding header field (section 14.40).

Transfer codings are analogous to the Content-Transfer-Encoding values of MIME , which were designed to enable safe transport of binary data over a 7-bit transport service. However, safe transport has a different focus for an 8bit-clean transfer protocol. In HTTP, the only unsafe characteristic of message-bodies is the difficulty in determining the exact body length (section 7.2.2), or the desire to
encrypt data over a shared transport.

The chunked encoding modifies the body of a message in order to transfer it as a series of chunks, each with its own size indicator, followed by an optional footer containing entity-header fields. This allows dynamically-produced content to be transferred along with the information necessary for the recipient to verify that it has received the full message.

Chunked-Body   = *chunk
                        "0" CRLF
                        footer
                        CRLF

       chunk          = chunk-size [ chunk-ext ] CRLF
                        chunk-data CRLF

       hex-no-zero    = <HEX excluding "0">

       chunk-size     = hex-no-zero *HEX
       chunk-ext      = *( ";" chunk-ext-name [ "=" chunk-ext-value ] )
       chunk-ext-name = token
       chunk-ext-val  = token | quoted-string
       chunk-data     = chunk-size(OCTET)

       footer         = *entity-header


The chunked encoding is ended by a zero-sized chunk followed by the footer, which is terminated by an empty line. The purpose of the footer is to provide an efficient way to supply information about an entity that is generated dynamically; applications MUST NOT send header fields in the footer which are not explicitly defined as being appropriate for the footer, such as Content-MD5 or future extensions to HTTP for digital signatures or other facilities.

An example process for decoding a Chunked-Body is presented in appendix 19.4.6.

All HTTP/1.1 applications MUST be able to receive and decode the "chunked" transfer coding, and MUST ignore transfer coding extensions they do not understand. A server which receives an entity-body with a transfer-coding it does not understand SHOULD return 501 (Unimplemented), and close the connection. A server MUST NOT send transfer-codings to an HTTP/1.0 client.


Ciao, Ricky.
Modificato da rickyvr il 23 maggio 2004 02.19 -
Modificato da rickyvr il 23 maggio 2004 02.22 -

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
68 messaggi dal 29 novembre 2002
ho capito che fa parte dell'intestazione del protocollo, ma perchè mi viene visualizzato all'interno della pagina???

"Questo business è un organismo vivente in costante crescita dove vige la massima competizione. Non c'è spazio per l'ozio e concetture a posteriori. Ci sono nuove scoperte ogni ora, nuove idee pronte per essere divorate, ridefinite.
Mi riporti il codice (aspx e code-behind), per cortesia?
Grazie.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
68 messaggi dal 29 novembre 2002
Ecco il codice...comunque ti ripeto che le "scritte strane" compaiono di rado quando seleziono la lista
<%@ Page Language="VB" %>
<script runat="server">

    Sub Page_Init(sender As Object, e As EventArgs)
       Lista.Items.Add(New ListItem("Campo_1"))
       Lista.Items.Add(New ListItem("Campo_2"))
       Lista.Items.Add(New ListItem("Campo_3"))
    End Sub

    Sub Page_Load(sender As Object, e As EventArgs)
       response.write("Il server web utilizzato è <b>" & getServerWeb() & "</b>")
    End Sub


    Function getServerWeb() As String
       Dim strUsersBrowser As String
       strUsersBrowser &= request.browser.browser
       strUsersBrowser &= cstr(request.browser.majorversion)
       strUsersBrowser &= "." & cstr(request.browser.minorversion)
       getServerWeb = strUsersBrowser
    End Function

</script>
<html>
<head>
    <title>Browser</title> <style>BODY {
  FONT-SIZE: 12px; FONT-FAMILY: Verdana
}
</style>
</head>
<body>
    <form id="Modulo" action="default.aspx" runat="server">
        <asp:ListBox id="Lista" runat="server" autopostback="true" rows="3"></asp:ListBox>
        <br />
        <br />
        <asp:Label id="messaggio" runat="server"></asp:Label>
    </form>
</body>
</html>


"Questo business è un organismo vivente in costante crescita dove vige la massima competizione. Non c'è spazio per l'ozio e concetture a posteriori. Ci sono nuove scoperte ogni ora, nuove idee pronte per essere divorate, ridefinite.
A me funziona sempre, senza errori in nessun caso.

Ma la scritta "Il server web utilizzato è IE6.0" viene inserita prima del tag di apertura del documento HTML (il che non è elegante, nè corretto). Perciò modificherei il codice come segue:

Sub Page_Load(sender As Object, e As EventArgs) 
Messaggio.Text ="Il server web utilizzato è <b>" & getServerWeb() & "</b>"
End Sub 


Prova a modificare il codice e fammi sapere se ti cambia qualcosa.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
68 messaggi dal 29 novembre 2002
MAh!!! stranamento ho riprovato molto e l'errore non mi viene più fuori!!!
Grazie per il suggerimento!!!! CIAO e VIVA il FORUM di AspItalia.Com!!!!

"Questo business è un organismo vivente in costante crescita dove vige la massima competizione. Non c'è spazio per l'ozio e concetture a posteriori. Ci sono nuove scoperte ogni ora, nuove idee pronte per essere divorate, ridefinite.

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.