Facebook C# SDK CanvasAction приводит к "Ошибка HTTP 405.0 - Метод не разрешен"

В моем приложении Facebook я использую CanvasAction так:

<div id="my-button" onclick="location.href='@Url.CanvasAction("Index", "Facebook")'">

который должен вызвать метод Index в FacebookController:

[CanvasAuthorize(Permissions = ExtendedPermissions)]
public ActionResult Index()
{
    .....
}

В настоящее время приложение настроено так, что хост является localhost. Раньше это работало, но неожиданно получался ответ "Ошибка HTTP 405.0 - Метод не разрешен". Я изменил свое приложение так, чтобы оно, насколько я вижу, идентично образцу приложения "ASP.NET MVC3 Canvas без Facebook JavaScript", включенного в FB C# SDK, который работает.

Это работает, хотя, если я добавлю "Индекс" по адресу: http://apps.facebook.com/myapp/Facebook/Index/

2 ответа

Решение

Переместил код в методе действия Index в новый метод действия и обновил первый параметр в вызове CanvasAction соответствующим образом, и теперь он работает. Итак, вместо этого:

<div id="my-button" onclick="location.href='@Url.CanvasAction("Index", "Facebook")'">

а также

[CanvasAuthorize(Permissions = ExtendedPermissions)]
public ActionResult Index()
{
   .....
   return View();
}

этот:

<div id="my-button" onclick="location.href='@Url.CanvasAction("PleaseWork", "Facebook")'">

а также

[CanvasAuthorize(Permissions = ExtendedPermissions)]
public ActionResult PleaseWork()
{
   .....
   return View("Index");
}

Я действительно понятия не имею, почему это не работает с методом Index.

Звучит как странный запрос, но проверьте, правильно ли работает ваша HTTPS-версия вашего сайта. Я видел 405-е, когда что-то не так с сертификатом SSL.

Другие вопросы по тегам