2 回答

TA貢獻1946條經驗 獲得超4個贊
所以這里發生了一些事情。
第一個也是最明顯的問題是您的代碼連續三次從圖表請求相同的用戶記錄。您撥打的每個電話都會GetDirectManagerForUser下載整個用戶配置文件。你想避免這樣做:
var manager = await graphHelper.GetManagerForCurrentUser(userIdToCheck);
var allUsersConnectedToCurrentManagerDisplayName = manager.DisplayName;
var allUsersConnectedToCurrentManagerEmail = manager.UserPrincipalName;
var allUsersConnectedToCurrentManagerId = manager.Id;
要避免的第二個問題是將您的請求包裝在這樣的任務中。它增加了代碼的復雜性,使調試變得非常困難,而且沒有必要。只需在方法級別添加async Task<>,然后讓編譯器為您處理連接:
async Task<User> GetDirectManagerForUser(GraphServiceClient _graphServiceClient, string managerId)
第三,您投射結果但沒有捕獲任何異常(即404您得到的)。您想要捕獲這些并返回一個空用戶:
var manager = await graphHelper.GetManagerForCurrentUser(userIdToCheck);
var allUsersConnectedToCurrentManagerDisplayName = manager.DisplayName;
var allUsersConnectedToCurrentManagerEmail = manager.UserPrincipalName;
var allUsersConnectedToCurrentManagerId = manager.Id;
async Task<User> GetDirectManagerForUser(GraphServiceClient _graphServiceClient, string managerId)
{
try
{
// Normal path
return await _graphServiceClient
.Users[managerId]
.Manager
.Request()
.GetAsync();
}
catch (Exception)
{
// Something went wrong or no manager exists
var emptyUser = new User();
}
}

TA貢獻1804條經驗 獲得超2個贊
您必須捕獲異常才能返回 null。我會這樣寫這個函數:
? ? public User GetDirectManagerForUser(GraphServiceClient _graphServiceClient, string managerId)
? ? {
? ? ? ? //.Result, because this function in synchronious
? ? ? ? try?
? ? ? ? {? ? ? ?
? ? ? ? ? ? var manager = await _graphServiceClient.Users[managerId].Manager.Request().GetAsync().Result;
? ? ? ? ? ? return manager;
? ? ? ? }
? ? ? ? catch(Exception)
? ? ? ? {
? ? ? ? ? ? return null;
? ? ? ? }
? ? }?
您還可以像這樣使函數異步:
? ? public async Task<User> GetDirectManagerForUser(GraphServiceClient _graphServiceClient, string managerId)
? ? {
? ? ? ? try?
? ? ? ? {? ? ? ?
? ? ? ? ? ? var manager = await _graphServiceClient.Users[managerId].Manager.Request().GetAsync();
? ? ? ? ? ? return manager;
? ? ? ? }
? ? ? ? catch(Exception)
? ? ? ? {
? ? ? ? ? ? return null;
? ? ? ? }
? ? }?
為什么沒有指定可訪問性級別?
- 2 回答
- 0 關注
- 108 瀏覽
添加回答
舉報