Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft Project联机OData异步查询_C#_Sharepoint_Sharepoint Online_Project Online - Fatal编程技术网

C# Microsoft Project联机OData异步查询

C# Microsoft Project联机OData异步查询,c#,sharepoint,sharepoint-online,project-online,C#,Sharepoint,Sharepoint Online,Project Online,我试图通过查询C#中的数据来使用。我遇到性能问题,每次查询延迟约1秒。我尝试使用该方法一次查询2个信息: public static async Task<string> ReadXml(string url) { var request = (HttpWebRequest)WebRequest.Create(url); request.Credentials = Credentials; // SharePointOnlineCre

我试图通过查询C#中的数据来使用。我遇到性能问题,每次查询延迟约1秒。我尝试使用该方法一次查询2个信息:

    public static async Task<string> ReadXml(string url)
    {
        var request = (HttpWebRequest)WebRequest.Create(url);

        request.Credentials = Credentials; // SharePointOnlineCredentials

        request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");

        using (var response = (HttpWebResponse)await request.GetResponseAsync())
        using (var stream = response.GetResponseStream())
        using (var reader = new System.IO.StreamReader(stream))
        {
            var xml = await reader.ReadToEndAsync();

            return xml;
        }
    }
如果我先“等待”第一个,然后再执行第二个,它可以正常工作,但与上面的代码不同。这是假设项目中有<300个任务,如果超过300个,我必须以300块的形式查询它们,导致整个查询需要4到5秒,因为我不能一次全部查询它们! 有没有一种方法可以同时发送多个请求? 我可以通过简单地在多个chrome标签中输入url来实现,速度非常快/响应速度更快。我不明白为什么它不能与我的代码一起工作


谢谢,

根据下面的帖子Webrequest。创建可能是问题所在,它使用了一种内部阻止方法

下面的代码使用较新的HttpClient,不应该有此问题

    public static HttpClient _HttpClient { get; } = new HttpClient(new HttpClientHandler { Credentials=new NetworkCredential("","")});

    public static async Task<string> ReadXml(string url)
    {
        using (var requestMessage = new HttpRequestMessage(HttpMethod.Get, url))
        {
            requestMessage.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            using (var response = await _HttpClient.SendAsync(requestMessage))
            {
                return await response.Content.ReadAsStringAsync();
            }
        }
    }
publicstatichttpclient{get;}=newhttpclient(newhttpclienthandler{Credentials=newnetworkcredential(“,”)});
公共静态异步任务ReadXml(字符串url)
{
使用(var requestMessage=newhttprequestmessage(HttpMethod.Get,url))
{
requestMessage.Headers.Add(“X-FORMS_-BASED_-AUTH_-ACCEPTED”,“f”);
使用(var response=await_HttpClient.sendsync(requestMessage))
{
return wait response.Content.ReadAsStringAsync();
}
}
}

嗨!我尝试使用您的代码,但我一直收到
401个未经授权的
响应。我将
NetworkCredential
替换为我已经在使用的
SharePointOnlineCredentials
,它给出了相同的结果。有什么想法吗?谢谢您好,我在添加标题时出错,已修复。我缺少“credential.GetAuthenticationCookie”。我在这里找到了一个半工作的示例代码:我仍然将您的答案作为接受,因为您将我发送到HttpClient跟踪。谢谢
    public static HttpClient _HttpClient { get; } = new HttpClient(new HttpClientHandler { Credentials=new NetworkCredential("","")});

    public static async Task<string> ReadXml(string url)
    {
        using (var requestMessage = new HttpRequestMessage(HttpMethod.Get, url))
        {
            requestMessage.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            using (var response = await _HttpClient.SendAsync(requestMessage))
            {
                return await response.Content.ReadAsStringAsync();
            }
        }
    }