簡體   English   中英

C#-從WebResponse獲取響應

[英]C# - Getting response from WebResponse

我正在嘗試下載放置在Internet上的RSS feed的XML源代碼,但是當我的過程到達WebResponse語句(下面的第二行)時,過程停止,並且接下來什么都沒有發生。 沒有錯誤,沒有例外或類似的東西。 我正在等待數十分鍾,仍然沒有任何反應。

WebRequest request = WebRequest.Create(source.Url);
WebResponse response = await request.GetResponseAsync(); // at this line it stops
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(receiveStream);

string xml = readStream.ReadToEnd().Trim();

readStream.Dispose();
response.Dispose();

知道是什么原因造成的嗎?

編輯:

public static async Task<string> GetContent(string uri)
{
    WebRequest request = WebRequest.Create(url);

    using (WebResponse response = await request.GetResponseAsync().ConfigureAwait(false))
    {
        Stream receiveStream = response.GetResponseStream();
        StreamReader readStream = new StreamReader(receiveStream);

        return readStream.ReadToEnd().Trim();
    }
}

public async Task<ObservableCollection<Source>> GetArticlesFromSource()
{
    sourceDefinitions = await GetSourceDefinitions();

    string imageFolderName = "ArticleImages";
    string imageFolderPath = localFolder.Path + "\\" + imageFolderName;
    StorageFolder imageFolder = await localFolder.CreateFolderAsync(imageFolderName, CreationCollisionOption.ReplaceExisting);

    foreach (var source in sourceDefinitions)
    {
        if (source.Selected == "true")
        {
            ObservableCollection<Article> articlesStep1 = new ObservableCollection<Article>();
            /*WebRequest request = WebRequest.Create(source.Url);
            WebResponse response = await request.GetResponseAsync();
            Stream receiveStream = response.GetResponseStream();
            StreamReader readStream = new StreamReader(receiveStream);*/

            string xml = await GetContent("http://www.honzachalupa.cz/").ConfigureAwait(false);

            Debug.WriteLine(xml);
            ...

幾乎可以肯定,您的應用程序將在返回的任務中進一步調用調用堆棧上的WaitResult ,這將導致死鎖 ,我將在博客中詳細解釋。

要解決此問題,請找到上游的Wait / Result調用,並將其更改為await 換句話說,使用“一路異步”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM