首页 > 解决方案 > Microsoft Graph v1.0 getSchedule api 很慢

问题描述

我正在引用 Microsoft Docs https://docs.microsoft.com/en-us/graph/api/calendar-getschedule?view=graph-rest-1.0&tabs=http

我正在尝试向https://graph.microsoft.com/v1.0/me/calendar/getSchedule发送请求。
我得到了成功的响应,但有时 API 很慢,尤其是在初始页面加载时可能需要超过 10 秒。但是,当我再次发送请求时,只需要 0.3 秒。

以下是我的发送请求代码:

    System.Net.ServicePointManager.ServerCertificateValidationCallback = 
        delegate { return true; };

    WebRequest request = WebRequest.Create(
        " https://graph.microsoft.com/v1.0/me/calendar/getSchedule ");

    string param = "{\"schedules\":[\"" + userPrincipalName + "\"],";
    param += "\"startTime\" : {\"dateTime\": \"" + startTime
        + "\",\"timeZone\": \"Taipei Standard Time\"},";
    param += "\"endTime\" : {\"dateTime\": \"" + endTime 
        + "\",\"timeZone\": \"Taipei Standard Time\"},";
    param += "\"availabilityViewInterval\" : 60}";

    request.Method = "POST";
    request.ContentType = "application/json";
    request.Headers["Authorization"] = " Bearer " + token;
    request.Headers["Prefer"] = "outlook.timezone=\"Taipei Standard Time\"";

    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
    {
        streamWriter.Write(param);
    }

    try
    {
        var httpResponse = (HttpWebResponse)request.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            WebUtility.WriteAjaxResult(true, null, result);

        }
    }

放缓发生在GetResponse. 我System.Diagnostics.Stopwatch用来计算需要多长时间var httpResponse = (HttpWebResponse)request.GetResponse();。反应用了 14 秒。

使用 Postman 发送请求比我的后端请求更快,更稳定。

希望有大神解答一下原因,谢谢!

标签: c#asp.netmicrosoft-graph-api

解决方案


推荐阅读