gpt4 book ai didi

c# - 是否可以重置 ServicePointManager?

转载 作者:行者123 更新时间:2023-12-03 11:51:19 25 4
gpt4 key购买 nike

我正在尝试遵循与 How does System.Net.Mail.SMTPClient do its local IP binding 中给出的代码类似的代码。我在具有多个 IP 地址的机器上使用 Windows 7 和 .Net 4.0。我有 BindIPEndPointDelegate定义

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;

第一次调用此代码时,会调用委托(delegate),并且无论设置什么 IP 地址,都会使用它。随后调用此代码时,委托(delegate)永远不会被调用 即随后使用第一个 IP 地址。 是否有可能改变这种每次调用代码时调用委托(delegate)回调的情况?

我在想 ServicePointManager (这是一个 静态类 )缓存对委托(delegate)的第一次调用的结果。可以重置这个类吗?我不在乎性能。

谢谢,
O.O.

最佳答案

我遇到了类似的问题,想重置服务点管理器 并针对不同的测试结果更改证书。对我有用的方法是将 MaxServicePointIdleTime 设置为一个低值,这将有效地重置它。

ServicePointManager.MaxServicePointIdleTime = 1;

关于c# - 是否可以重置 ServicePointManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10320992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com