2009-08-02 19 views
10

Sono molto sorpreso di vedere che HttpWebRequest non ha alcun metodo di chiusura, ma la sua controparte è HttpWebResponse. Mi rende un po 'confuso e scomodo. :-)HttpWebRequest non ha un metodo simile?

Quindi, dobbiamo solo chiamare Chiudi sulla risposta e non è necessario trattare con la richiesta? La mia preoccupazione riguarda le perdite e una migliore efficienza nell'uso delle risorse. Sto usando VSTS2008 + C# + .Net 3.5.

+1

(Ho eliminato il duplicato e unito nel contenuto extra) –

+0

hai chiesto di nuovo ** ** (ora cancellato)? Non farlo per favore ... –

risposta

29

Sì, è sufficiente chiamarlo sull'oggetto risposta.

Una richiesta non fa assolutamente nulla da sola. Non apre un socket o qualcosa del genere. Tiene solo alcuni dati e puoi semplicemente ignorarlo e buttarlo via se non ne hai bisogno (è una pura risorsa gestita e il garbage collector si prenderà cura di esso). Le cose reali accadono dopo che uno dei metodi GetResponse è stato chiamato.

+0

Ciao, c'è qualche documentazione MS o un altro posto "ufficiale" che spiega il funzionamento interno di HttpWebRequest/Response? – tamberg

+0

@tamberg è possibile ottenere il codice sorgente e leggerlo da soli: http://referencesource.microsoft.com/netframework.aspx –

+0

In realtà non sembra funzionare. Almeno per una connessione SSL, non sembra che invii la chiusura al server. – Tuntable

1

Il metodo di chiusura a cui si fa riferimento su HttpWebResponse serve per inviare la risposta finale al server Web. Sull'oggetto HttpWebRequest, tutto il contenuto è disponibile quando si avvia l'elaborazione, quindi non è necessario chiudere e comunicare con un server.

4

Un'analogia:

Se voglio parlare con te e io sono già sicuro che voglio parlare con te mi limito a chiamare il tuo nome (Request). Tuttavia, spetta a te decidere quando, come e cosa rispondere a me (Risposta). Quindi avrai più controllo sulla comunicazione di me, l'ho appena iniziato.

Problemi correlati