É possível redefinir o ServicePointManager?
Eu estou tentando seguir o código semelhante ao dado emComo o System.Net.Mail.SMTPClient faz sua ligação de IP local Eu estou usando o Windows 7 e .net 4.0 em uma máquina com vários endereços IP. Eu tenho oBindIPEndPointDelegate definiram
<code>private static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount) { string IPAddr = //some logic to return a different IP each time return new IPEndPoint(IPAddr, 0); } </code>
Eu então envio meu email usando
<code>SmtpClient client = new SmtpClient(); client.Host = SMTP_SERVER; //IP Address as string client.Port = 25; client.EnableSsl = false; client.ServicePoint.BindIPEndPointDelegate = new System.Net.BindIPEndPoint(BindIPEndPointCallback); client.ServicePoint.ConnectionLeaseTimeout = 0; client.Send(msg); //msg is of type MailMessage properly initialized/set client = null; </code>
Na primeira vez em que esse código é chamado, o delegado é chamado e, seja qual for o endereço IP definido, ele é usado. Nas vezes subsequentes em que esse código é chamado, o delegado nunca é chamadoou seja, o primeiro endereço IP é usado posteriormente. É possível alterar esta situação em que cada vez que o código é chamado, o retorno de chamada do delegado é chamado?
Estou pensandoServicePointManager (que é umclasse estática) armazena em cache o resultado da primeira chamada para o delegado. É possível redefinir essa classe? Eu não me importo com performance.
Obrigado, O. O.