我有一个控制台程序,它使用Redemption dll连接到Outlook 2016并在2个用户之间发送一些电子邮件。
该计划的目的是测试交换/展望。所以,在程序中,我们发送电子邮件,制作会议日程......,然后继续循环并一次又一次地做同样的事情。
运行此程序时发现了一个奇怪的问题。有时,程序会弹出一个窗口并要求提供凭据。用户的凭证是硬编码的,显然工作正常。如屏幕截图所示,程序运行大约476次,弹出窗口显示在第477圈。弹出窗口是随机的,并不总是出现在第477个循环中。在某些机器上,弹出窗口显示在第5个循环。
如果我们使用Taskmgr终止控制台程序,然后重新启动控制台程序,它会继续运行并且不会弹出此凭据窗口。
之前有人看过这个吗?特别是使用救赎?如何解决这个问题?
由于
这里有一些代码。我认为弹出窗口是因为
RedemptionSession.LogonHostedExchangeMailbox(Mailbox, Mailbox, Password);
但是,奇怪的是为什么前466次没问题?是否可以禁用此弹出窗口,即使我们必须让登录失败。
internal bool Login()
{
bool result = false;
if (RedemptionSession == null)
{
if (InitializeRedemption() == false)
{
string error = "Unable to initialize Redemption";
Log.Error(error);
TestResult = new TestResult(TestStatuses.Failure, error);
return result;
}
}
... check parameters....
LoginBegin = DateTime.Now;
try
{
RedemptionSession.LogonHostedExchangeMailbox(Mailbox, Mailbox, Password);
}
catch (System.Exception ex)
{
Log.Error(ex);
TestResult = new TestResult(TestStatuses.Failure, ex.Message);
return result;
}
LoginEnd = DateTime.Now;
result = RedemptionSession.LoggedOn;
return result;
}
答案 0 :(得分:0)
在不知道该工具做了什么的情况下(在那个时间以及来自Exchange环境的更多信息),很难猜出可能是什么原因。我目前可以想到的最接近的是ThrottlingPolicy,因为您的工具看起来比普通用户做的更多“流量”。根据工具执行的操作以及 MIGHT 的策略,策略将启动,这被视为“密码提示”。
因此,要检查您是否可以在Exchange上进行进一步的日志调试,或者如果Exchange管理员同意为您的工具中使用的指定任务用户构建new ThrottlingPolicy并为其提供higher values。
P.S。 请注意,如果限制策略导致问题,您可能希望重新考虑您的代码,因为在使用Exchange Online here时无法更改限制策略。一个想法可能是(仅用于调试)在操作之间添加30秒保持,以查看是否解决了问题。