Странное поведение HttpWebRequest

ОБНОВЛЕНИЕ Похоже, проблема связана с это. У меня есть этот кусок кода для работы:

dynamic facebookResponse = facebookClient.Batch(new FacebookBatchParameter(HttpMethod.Get, "me"), new FacebookBatchParameter(HttpMethod.Get, "me", new { fields = "picture.type(large)" }));

Errr не уверен, почему это происходит!

Я обнаружил странное поведение HttpWebRequest.

// Send the image to blob storage.
var url = facebookResponse[1]["picture"]["data"]["url"];
byte[] imageBytes;
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 5000;
request.ReadWriteTimeout = 20000;
var response = (HttpWebResponse)request.GetResponse();

var validationResults = _imageService.UploadProfilePicture(response, url, newUserId).ToList();

В последней строке выдается ошибка, говорящая 'object' does not contain a definition for 'ToList', но если я уберу все строки перед последней строкой, она войдет в функцию.

Возможно, проблема с потоками?

РЕДАКТИРОВАТЬ: _imageService — это просто зависимость, переданная в контроллер с помощью Ninject.

Вот функция UploadProfilePicture:

public IEnumerable<ValidationResult> UploadProfilePicture(Stream s, string fileName, int userId)
{
    if (s == null) throw new ArgumentNullException("s");
    if (userId <= 0) throw new ArgumentNullException("userId");

    if (s.Length <= 0)
    {
        yield return new ValidationResult("", GlobalResources.FileContainsNoContent);
        yield break;
    }

    var maxProfilePictureSize = int.Parse(ConfigurationManager.AppSettings[ConfigurationManagerConstants.BlobMaxProfilePictureSize]);
    if (s.Length > maxProfilePictureSize)
    {
        yield return new ValidationResult("", string.Format(GlobalResources.ProfilePictureMustBeNoGreaterThan,
            ConfigurationManager.AppSettings[ConfigurationManagerConstants.BlobMaxProfilePictureSizeFriendlyText]));
        yield break;
    }

    const string defaultExtensionType = ".jpg";
    var container = GetCloudBlobContainer(ConfigurationManager.AppSettings[ConfigurationManagerConstants.BlobImageContainerName]);
    var uniqueBlobName = string.Format(ConfigurationManager.AppSettings[ConfigurationManagerConstants.BlobUserProfilePicturePath], userId, defaultExtensionType);
    var blob = container.GetBlockBlobReference(uniqueBlobName);
    blob.Properties.ContentType = "image/jpeg";

    var uploadImageExtension = Path.GetExtension(fileName);
    if (!string.IsNullOrWhiteSpace(uploadImageExtension) && !uploadImageExtension.Equals(defaultExtensionType, StringComparison.InvariantCultureIgnoreCase))
    {
        using (var ms = new MemoryStream())
        {
            ImageBuilder.Current.Build(s, ms, new ResizeSettings("format=jpg"));
            ms.Seek(0, SeekOrigin.Begin);
            blob.UploadFromStream(ms);
        }
    }
    else
    {
        blob.UploadFromStream(s);
    }
}

person Ryan    schedule 18.02.2013    source источник
comment
Здесь и близко нет достаточной информации. Что такое _imageService? Что возвращает UploadProfilePicture?   -  person Simon Whitehead    schedule 18.02.2013
comment
@SimonWhitehead - Пожалуйста, смотрите мои правки   -  person Ryan    schedule 18.02.2013
comment
Предоставленная вами функция принимает 2 аргумента.. ваш пример передает 3..   -  person Simon Whitehead    schedule 18.02.2013
comment
@SimonWhitehead - извините, вставил перегруженную функцию   -  person Ryan    schedule 18.02.2013
comment
Я предполагаю, что у вас есть директива using System.Linq?   -  person Simon Whitehead    schedule 18.02.2013
comment
@SimonWhitehead - Да, конечно: D   -  person Ryan    schedule 18.02.2013
comment
@SimonWhitehead - Пожалуйста, смотрите мои правки   -  person Ryan    schedule 18.02.2013
comment
На вашем месте я бы декомпилировал это в IL и посмотрел, что происходит. dynamic при компиляции рассматривается как причудливый object .. так что, скорее всего, ваша проблема находится где-то в IL.   -  person Simon Whitehead    schedule 19.02.2013