C# 是否可以重置ServicePointManager?
我正试图遵循类似于上一节给出的代码,在具有多个IP地址的计算机上使用Windows 7和.Net 4.0。我有明确的定义 然后我使用C# 是否可以重置ServicePointManager?,c#,.net,sockets,email,network-programming,C#,.net,Sockets,Email,Network Programming,我正试图遵循类似于上一节给出的代码,在具有多个IP地址的计算机上使用Windows 7和.Net 4.0。我有明确的定义 然后我使用 SmtpClient client = new SmtpClient(); client.Host = SMTP_SERVER; //IP Address as string client.Port = 25; client.EnableSsl = false; client.ServicePoint.BindIPEndPointDelegate = ne
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.我在上面发布的问题中遇到的问题是,所有电子邮件都将使用第一条消息的IP发送出去。我认为有什么东西(可能是ServicePointManager)正在缓存连接。虽然我还没有找到重置ServicePointManager的解决方案,但我实现了上述设置
client=null的尝试即使调用GC.Collect(),code>也不会真正关闭连接代码>不久之后。我唯一能找到工作的是:
SmtpClient client = new SmtpClient();
//Remaining code here....
client.Send(msg);
client.Dispose(); //Secret Sauce
调用client.Dispose()
发送每条消息后,总是会重置连接,因此下一条消息可以选择它需要的IP地址
O.O.我在上面发布的问题中遇到的问题是,所有电子邮件都将使用第一条消息的IP发送出去。我认为有什么东西(可能是ServicePointManager)正在缓存连接。虽然我还没有找到重置ServicePointManager的解决方案,但我实现了上述设置client=null的尝试即使调用GC.Collect(),code>也不会真正关闭连接代码>不久之后。我唯一能找到工作的是:
SmtpClient client = new SmtpClient();
//Remaining code here....
client.Send(msg);
client.Dispose(); //Secret Sauce
调用client.Dispose()
发送每条消息后,总是会重置连接,因此下一条消息可以选择它需要的IP地址
O.O.我遇到了类似的问题,希望重置ServicePointManager并更改不同测试结果的证书。我的工作方式是将MaxServicePointIdleTime设置为一个较低的值,这将有效地重置它
ServicePointManager.MaxServicePointIdleTime = 1;
我遇到了类似的问题,希望重置ServicePointManager,并更改不同测试结果的证书。我的工作方式是将MaxServicePointIdleTime设置为一个较低的值,这将有效地重置它
ServicePointManager.MaxServicePointIdleTime = 1;
您可以将smtp客户端包装在一个using中,并让它为您这样做using(var-client=new-SmtpClient()){client.Send(msg);}
您可以在using中包装smtp客户端,并让它为您完成这项工作<代码>使用(var client=new SmtpClient()){client.Send(msg);}