2017-03-14 34 views
0

我有一個控制檯程序,它使用Redemption DLL連接到Outlook 2016併發送一些電子郵件2用戶之間。Outlook彈出一個Windows安全窗口要求憑據使用時贖回dll

該計劃的目的是測試交流/展望。因此,在該計劃中,我們發送電子郵件,制定會議計劃......,然後保持循環,並一次又一次地做同樣的事情。

運行此程序時發現了一個奇怪的問題。有時,程序會彈出一個窗口並要求提供憑據。用戶的憑證是硬編碼的,顯然工作正常。如屏幕截圖所示,程序運行約476次,彈出窗口顯示在第477次循環。彈出窗口是隨機的,並不總是出現在第477圈。在某些機器上,彈出窗口顯示在第5個循環處。

如果我們使用Taskmgr終止控制檯程序,然後重新啓動控制檯程序,它將繼續運行並且不會彈出此憑據窗口。

任何人都看到過嗎?尤其是使用Redemption?如何解決這個問題?

感謝

enter image description here

  • 這裏是一些代碼。我認爲,在彈出的情況發生,因爲

    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

「工具」是否有某種記錄來檢查此動作發生了什麼?登錄失敗了,導致錯誤,超時發生了嗎?另外它可能是來自Exchange的阻止該工具的策略策略。 – BastianW

+0

請發佈您的代碼的相關片段。 –

+0

嗨,德米特里,我添加了代碼,如果你需要更多的代碼,請讓我知道。或者,我們可以離線或通過電子郵件談談嗎? – urlreader

回答

0

不知道該工具做了什麼(此時多的相關信息從Exchange環境),它這難道不是很容易猜測可能是什麼原因。我目前可能想到的最接近的是ThrottlingPolicy,因爲您的工具看起來像做普通用戶那樣「更加流量」。根據工具執行的操作和策略,策略會啓動並將其視爲「密碼提示」。

因此,要檢查您是否可以在Exchange上進行一些進一步的日誌調試,或者Exchange管理員同意爲您的工具中使用的指定taskuser生成new ThrottlingPolicy,併爲它們提供higher values

P.S. 請注意,如果限制策略導致此問題,則可能希望重新考慮您的代碼,因爲使用Exchange Online時不可能更改限制策略,如here所述。一個想法可能是(僅用於調試)在動作之間增加30秒,以查看是否解決了問題。