更新問題がこれ に関連しているように見えます。私は対処するコードのこのチャンクを持っています:
dynamic facebookResponse = facebookClient.Batch(new FacebookBatchParameter(HttpMethod.Get, "me"), new FacebookBatchParameter(HttpMethod.Get, "me", new { fields = "picture.type(large)" }));
なぜこれが起こっているのかわからない!
奇妙な動作 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);
}
}