2016-07-15 89 views
1

我有一個相當奇怪的問題,我無法環繞我的頭。因此,這裏是代碼:新的MailAddress()退出方法

[HttpGet] 
[AllowAnonymous] 
public ActionResult SendEmail() 
{ 
    SendRegisterEmail("Test", "Testagain", "lastTest"); 
    return View("Index"); 
} 

public async Task<bool> SendRegisterEmail(string subject, string message, string to) 
{ 
    var email = new Email(); 
    var mailAddress = new MailAddress(to); 
    email.Subject = subject; 
    email.Body = message; 
    var mailAddressCollection = new MailAddressCollection(); 
    mailAddressCollection.Add(mailAddress); 
    email.To = (mailAddressCollection); 

    return await Send(email); 
} 

現在證明我的問題,我打破了代碼爲單個行,所以我可以看到哪一行它打破。以下是我發現:

當調試這和我踏進SendRegisterEmail方法,即說var mailAddress = new MailAddress(to);行獲取運行,然後退出出來的功能和運行線return View("Index");和頁面加載。奇怪的是我添加了一個日誌方法來發送最後的結果,並且日誌記錄永遠不會被觸發。我在Send上放了一個斷點,它從來沒有被擊中。就好像電子郵件的創建崩潰了,決定退出到調用者函數並繼續執行代碼。

我不知道爲什麼。

+0

您分配給「to」的值不是有效的電子郵件地址。這可能會導致它退出函數,因爲它是異步它運行返回查看語句 –

回答

2

SendRegisterEmail方法是異步的,你不會等待它。

當前,您開始執行一次即燃即用操作,並且在創建新的MailAddress實例時執行指令return View。 最有可能它throwsFormatException你不能捕獲,因爲在另一個線程中拋出異常。

更新您的操作方法

public async Task <ActionResult> SendEmail() 
{ 
    await SendRegisterEmail("Test", "Testagain", "lastTest"); 
    return View("Index"); 
} 

也在等待是不是真的需要在返回之前,你可以把它改成

但是這不涉及到你有問題。

+0

我已更新,我仍然得到相同的結果。 – Bojan

+0

我會等待發送(電子郵件)並返回一個真實的,個人... –

+0

啊,它現在不工作的原因是因爲它不喜歡''lastTest''作爲一個值,它想要一個適當的電子郵件地址。 – Bojan