ਪ੍ਰੌਕਸੀ ਬੇਨਤੀਆਂ ਵਿਚਕਾਰ HttpWebRequest ਜਵਾਬਾਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰੋ
ਪੁਰਾਣੇ HttpWebRequest ਜਵਾਬਾਂ ਨੂੰ ਸਪਸ਼ਟ ਜੀਵਨਕਾਲ ਦਿਓ ਤਾਂ ਜੋ ਵਾਰ-ਵਾਰ ਕੀਤੀਆਂ ਪ੍ਰੌਕਸੀ ਬੇਨਤੀਆਂ ਕਨੈਕਸ਼ਨ ਸਰੋਤਾਂ ਨੂੰ ਅਣਮਿੱਥੇ ਸਮੇਂ ਲਈ ਨਾ ਫੜੀ ਰੱਖਣ।
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
ਹਰ ਪੁਰਾਣੇ HttpWebRequest ਜਵਾਬ ਨੂੰ ਅਜਿਹੇ ਦਾਇਰੇ ਵਿੱਚ ਰੱਖੋ ਜੋ ਇਸਦੀ ਵਰਤੋਂ ਪੂਰੀ ਕਰਕੇ ਇਸਨੂੰ ਮੁਕਤ ਕਰ ਦੇਵੇ। ਇੱਥੇ destination ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਲਿਖਣਯੋਗ ਆਉਟਪੁੱਟ ਸਟ੍ਰੀਮ ਹੈ; ਕਾਪੀ ਫੇਲ੍ਹ ਹੋਣ 'ਤੇ ਵੀ using ਬਲਾਕ WebResponse ਨੂੰ ਮੁਕਤ ਕਰਦਾ ਹੈ, ਉਸ ਆਉਟਪੁੱਟ ਦੀ ਮਾਲਕੀ ਲਏ ਬਿਨਾਂ।
ਇੱਕ ਪ੍ਰੌਕਸੀ ਬੇਨਤੀ ਦਾ ਸਫਲ ਹੋਣਾ ਅਤੇ ਬਾਅਦ ਵਾਲਿਆਂ ਦਾ ਇੰਤਜ਼ਾਰ ਕਰਨਾ ਅਧੂਰੇ ਜਵਾਬਾਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰ ਸਕਦਾ ਹੈ ਜੋ ਕਨੈਕਸ਼ਨ ਸਰੋਤ ਰੋਕ ਰਹੇ ਹਨ। ਸਿਰਫ਼ WebResponse ਪ੍ਰਾਪਤ ਕਰਨਾ ਇਸਦਾ ਬਾਡੀ ਪੂਰਾ ਨਹੀਂ ਕਰਦਾ। ਬੇਨਤੀ ਦੀ ਸਮਾਂ-ਸੀਮਾ ਇੰਤਜ਼ਾਰ ਨੂੰ ਸੀਮਤ ਕਰਦੀ ਹੈ, ਪਹਿਲਾਂ ਹੀ ਪ੍ਰਾਪਤ ਹੋਏ ਹਰ ਜਵਾਬ ਦੇ ਜੀਵਨਕਾਲ ਨੂੰ ਨਹੀਂ।
ਗਲਤੀਆਂ 'ਤੇ ਵੀ ਉਹੀ ਮਾਲਕੀ ਲਾਗੂ ਕਰੋ। WebException ਅਜਿਹਾ ਜਵਾਬ ਲੈ ਕੇ ਆ ਸਕਦਾ ਹੈ ਜਿਸਦੀ ਤੁਹਾਡਾ ਕੋਡ ਜਾਂਚ ਕਰਦਾ ਹੈ; ਜਾਂਚ ਤੋਂ ਬਾਅਦ ਇਸਨੂੰ ਬੰਦ ਕਰੋ। ਟ੍ਰਾਂਸਪੋਰਟ ਫੇਲ੍ਹ ਹੋਣ 'ਤੇ ਕੋਈ ਜਵਾਬ ਹੀ ਨਾ ਹੋਵੇ।
ਨਿਪਟਾਰਾ ਜਵਾਬ ਦੇ ਸਰੋਤ ਵਾਪਸ ਕਰਦਾ ਹੈ ਪਰ ਹਰ ਹਾਲਤ ਵਿੱਚ ਦੁਬਾਰਾ ਵਰਤੋਂ ਯੋਗ ਕਨੈਕਸ਼ਨਾਂ ਦਾ ਵਾਅਦਾ ਨਹੀਂ ਕਰਦਾ। ਪ੍ਰੋਟੋਕੋਲ, ਸਰਵਰ ਅਤੇ ਬਾਡੀ ਦੀ ਵਰਤੋਂ ਅਜੇ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਇਹ ਪੁਰਾਣੇ WebRequest ਸਟੈਕ ਦੀ ਸੰਭਾਲ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ। ਨਵੇਂ ਕੋਡ ਵਿੱਚ ਅਸਲ ਕਲਾਇੰਟ ਦੀ ਜਵਾਬ/ਸਟ੍ਰੀਮ ਮਾਲਕੀ ਦੀ ਪਾਲਣਾ ਕਰੋ; HttpClient ਲਈ, ਜਵਾਬਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਨਿਪਟਾਰਾ ਦਾਇਰੇ ਵਿੱਚ ਰੱਖੋ, ਅਤੇ ਇਸ ਸਫ਼ਾਈ ਫੇਲ੍ਹਤਾ ਨੂੰ ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣੀਕਰਨ ਜਾਂ ਰੂਟ ਚੋਣ ਤੋਂ ਵੱਖਰਿਆਂ ਪਛਾਣੋ।