我正在編寫一個需要在Azure Active Directory中創建用戶的MVC應用程序。我已經將創建用戶的代碼封裝在自己的庫中,並且它在單元測試中工作正常。但是,當我的MVC控制器中調用相同的代碼時,對AddUserAsync的調用永遠不會返回。作爲一項測試,我改變了我的控制器,以便創建一個新用戶而不是創建一個用戶。控制器看起來像:MVC應用程序內的Azure ActiveDirectoryClient永遠不會返回
public class RegistrationController : BaseController
{
public ActionResult Index()
{
AadAccessHelper adHelper = new AadAccessHelper();
var client = adHelper.AdClient;
AADUser aadUser = adHelper.GetUserByPrincipalName("[email protected]");
return View();
}
}
和輔助類的東西,得到用戶的樣子:
private async Task<User> GetUserByUserName(ActiveDirectoryClient adClient, string userName)
{
var user = await adClient.Users.Where(u => u.UserPrincipalName == userName).ExecuteSingleAsync();
return (User) user;
}
public AADUser GetUserByPrincipalName(string userName)
{
Task<User> user = GetUserByUserName(AdClient, userName);
user.Wait(new TimeSpan(0, 1, 0));
if (true == user.IsFaulted)
{
throw user.Exception;
}
if (null == user.Result)
{
return null;
}
return MapUserToAADUser(user.Result);
}
到ExecuteSingleAsync調用只是從來沒有返回不管多久,我給它。我錯過了什麼?
測試過程是運行Chrome中出現的網站(我也用過兩個IE,結果相同),我導航到註冊頁面(爲了測試目的,我移動了代碼)那就是悲傷開始的時候。
再次說明:代碼在單元測試中運行時工作正常。我是否需要使用其他客戶端而不是Microsoft.Azure.ActiveDirectory.GraphClient.ActiveDirectoryClient?
當我完成應用程序的目的是註冊新用戶,並允許指定用戶管理應用程序用戶(重置密碼,更改用戶屬性,將用戶分配給組等)。
我在Visual Studio 2015中,無論最新的東西是從GitHub出來。
任何幫助將不勝感激。
這看起來像一個典型的僵局。看看斯蒂芬·克利裏的帖子:http://blog.stephencleary.com/2012/02/async-and-await.html –