Facebook Холст POST ASP.net - PullRequest
       7

Facebook Холст POST ASP.net

3 голосов
/ 15 марта 2011

Facebook требует, чтобы все приложения Canvas поддерживали HTTP POST в iframe вместо GET. Однако, когда я включаю эту функцию, ASP.net жалуется, что

The HTTP verb POST used to access path '/' is not allowed

По какой-то причине Facebook требует путь, который не имеет расширения (например, он требует mydomain.com/random/ вместо mydomain.com/mypage.aspx).

Как я могу включить POST для страниц aspx и корневой (по умолчанию) страницы на моей странице web.config, чтобы я мог разрабатывать свое приложение локально? Я полагаю, что конфигурация на IIS более проста.

Спасибо.

Ответы [ 3 ]

1 голос
/ 15 марта 2011

Захватывающий. Я не верил в это, пока не попробовал. Мне удалось избавиться от исключения при запуске этого на веб-сервере VStudio, добавив <add verb="*" path="/" type="System.Web.UI.Page"/> в раздел <httpHandlers>. Хитрость в том, что на самом деле она не отображала страницу по умолчанию и не запускала событие Page_Load. Я заменил System.Web.UI.Page пространством имен и типом страницы по умолчанию, и на этот раз событие Page_Load запустилось, но разметка в файле .aspx, похоже, была проигнорирована. Вызов Response.Write () в событии Page_Load привел к выводу в браузер.

Так что, может быть, это полезно само по себе, или, может быть, оно направляет вас в правильном направлении.

Я также не знаю, какие побочные эффекты это может иметь, поэтому следуйте с осторожностью.

Редактировать: нужный тип можно найти в файле machine.config - System.Web.UI.PageHandlerFactory

0 голосов
/ 24 марта 2011

Я нашел работоспособное решение, "переписав" запросы к моему корневому пути в файле Global.asax.Работает на сервере разработки, но, вероятно, его придется удалить в производственном процессе:

void Application_BeginRequest(object sender, EventArgs e) {
  string p = Request.Path;
  if (p.Equals("/myapp/")) {
    var query = "?" + Request.QueryString.ToString();
    if (query.Equals("?")) {
      query = "";
    }
    Context.RewritePath("/myapp/Default.aspx" + query);
  }
}
0 голосов
/ 18 марта 2011

не думаю, что вы можете ... Вместо localhost, вам на самом деле нужно отправить приложение на сервер в Интернете, который могут видеть серверы FB, тогда ваше приложение должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...