Как использовать маршрутизацию в ASP.NET MVC для загрузки изображения, созданного на лету, в Facebook - PullRequest
0 голосов
/ 03 января 2012

Я использую 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) оно отображает изображение. Но на стене сообщение не отображает изображение, только сообщение. Почему это не работает и есть ли способ ее решить?

1 Ответ

0 голосов
/ 03 января 2012

Когда я перехожу на http://apps.facebook.com/my_app/GetImage/some_image_name.png, я вижу HTML-код Facebook, обернутый вокруг изображения, живущего в iFrame.Если вы можете дать URL непосредственно к вашему изображению, это будет работать намного лучше.Например, www.example.com/myApp/GetImage/some_image_name.png

...