我想使用MailKit通过我们的Exchange服务器发送电子邮件,使用该进程的凭据.
NetworkCredential使用域/用户名/密码建立一个工作:
using (var client = new SmtpClient(ProtocolLogger))
{
client.Connect(server, port);
// Works
var creds = new NetworkCredential(username, password, domain);
client.Authenticate(creds);
client.Send(msg);
}
Run Code Online (Sandbox Code Playgroud)
如果我CredentialCache.DefaultNetworkCredentials在以同一个用户身份运行时使用,则会失败并显示MailKit.Security.AuthenticationException:
using (var client = new SmtpClient(ProtocolLogger))
{
client.Connect(server, port);
// Authentication failure
client.Authenticate(CredentialCache.DefaultNetworkCredentials);
client.Send(msg);
}
Run Code Online (Sandbox Code Playgroud)
在ProtocolLogger输出以下(含邮件服务器和base64编码字符串改变):
Connected to smtp://mymailserver:25/?starttls=when-available
S: 220 mymailserver Microsoft ESMTP MAIL Service ready at Thu, 30 Jun 2016 12:45:04 +0930
C: EHLO [172.1.1.2]
S: 250-mymailserver Hello [172.1.1.2] …Run Code Online (Sandbox Code Playgroud) 我正在使用 Zookeeper 3.4.6 进行一个项目,并且正在执行一些故障模式测试。这样做时,我发现了(我认为是)意外的行为。
如果领导者 Zookeeper 进程被杀死,追随者是否应该重新启动?
环境:
OS: Windows Server 2008 R2 (hosted in a Tanuki Java service wrapper)
Zookeeper: 3.4.6
Java JDK: 1.7.0.210
Run Code Online (Sandbox Code Playgroud)
测试:
测试是杀死 Zookeeper 进程并确保集群恢复。
如果我杀死一个非领导进程,它会重新启动并重新加入集群,而不会影响其他节点。
如果我杀死领导进程,领导和追随者将重新启动。这似乎不对,因为有一段时间客户端无法连接到任何Zookeeper 节点。
我已经尝试了TCP和UDP通信设置,但都表现出相同的行为。不过,UDP 的恢复速度是后者的两倍。
动物园管理员设置
tickTime=2000
initLimit=5
syncLimit=2
minSessionTimeout=5000
maxSessionTimeout=120000
dataDir=C:\\ProgramData\\Saab OneView\\ZooKeeper\\zoo-data
clientPort=2181
leaderServes=yes
autopurge.purgeInterval=24
# IP addresses blanked out here
server.1=0.0.0.1:2888:3888
server.2=0.0.0.2:2888:3888
server.3=0.0.0.3:2888:3888
server.4=0.0.0.4:2888:3888
server.5=0.0.0.5:2888:3888
# This is for zookeeper->zookeeper communication
# I've tried both settings, UDP …Run Code Online (Sandbox Code Playgroud) 我正在使用优秀的CefSharp项目(版本 67)在我们的 WPF 应用程序中托管浏览器。
使用 CefSharp 会导致CefSharp.BrowserSubprocess启动子进程,这是设计使然。
如果我干净地退出我的应用程序并Cef.Shutdown()按照文档中的建议调用,这些进程将停止:
// Hook up handler earlier in application
Application.Current.Exit += OnApplicationExit;
...
private void OnApplicationExit(object sender, ExitEventArgs e)
{
if (Dispatcher.CheckAccess() == false)
{
Dispatcher.Invoke(() => OnApplicationExit(sender, e));
return;
}
// Stops CefSharp.BrowserSubprocess processes
Cef.Shutdown();
}
Run Code Online (Sandbox Code Playgroud)
我注意到,如果应用程序被终止,CefSharp.BrowserSubprocess负责渲染的将继续运行并开始使用大量CPU,并且会无限期地这样做。
我可以添加一些代码来处理这个问题,检查任何孤立的CefSharp.BrowserSubprocess进程,然后杀死它们。我想知道是否有更好的选择?
如果进程本身可以执行周期检查并自行终止,这可能是一种设置,那就太好了。