我正在尝试遵循类似于给出的代码System.Net.Mail.SMTPClient如何进行本地IP绑定我在具有多个 IP 地址的计算机上使用 Windows 7 和 .Net 4.0。我有绑定IPEndPointDelegate定义的
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);
}
然后我使用发送电子邮件
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;
第一次调用此代码时,委托将被调用,无论设置的 IP 地址是什么,它都会被使用。随后调用此代码时,委托将永远不会被调用即随后使用第一个 IP 地址。是否可以改变这种每次调用代码时都会调用委托回调的情况?
我在想服务点管理器(这是一个静态类) 缓存第一次调用委托的结果。是否可以重置该类?我不关心表现。
谢谢你,
O.O.
我遇到了类似的问题并想重置服务点管理器并针对不同的测试结果更改证书。对我有用的方法是将 MaxServicePointIdleTime 设置为一个较低的值,这将有效地重置它。
ServicePointManager.MaxServicePointIdleTime = 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)