Я использую C # Facebook SDK для публикации изображения на стене пользователя. Я хотел бы, чтобы изображение создавалось в оперативной памяти на лету, а не сохранялось на диске, поэтому я предоставляю ссылку на несуществующее изображение в посте Facebook и перенаправляю запрос на это изображение в метод действия, который создает изображение и вернуть FileContentResult. Код:
Global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"ImageRoute",
"image/{imageName}.png",
new { controller = "Facebook", action = "GetImage" });
);
FacebookController.cs
public ActionResult PostAnImageAndMessageToFacebookWall()
{
var parameters = new Dictionary<String, Object> { { "message", "A message to the Wall" },
{ "picture", "http://my_app.com/image/my_image" + ".png")}};
_facebookWebClient.Post("me/feed", parameters);
return View();
}
public FileContentResult GetImage(string imageName)
{
Image myImage = _imageService.CreateImage(imageName);
var memStream = new MemoryStream();
myImage.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);
return new FileContentResult(memStream.ToArray(), "image/png");
}
Если я набираю адрес и значения маршрутизации моего веб-приложения Facebook в браузере, оно отображает изображение (т. Е. http://apps.facebook.com/my_app/image/some_image_name.png) оно отображает изображение. Но на стене сообщение не отображает изображение, только сообщение.
Почему это не работает и есть ли способ ее решить?