2011-03-14 70 views
3

Facebook要求所有canvas应用程序在iframe中支持HTTP POST而不是GET。然而,当我启用该功能,ASP.net抱怨Facebook Canvas POST ASP.net

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

出于某种原因,Facebook的要求,没有在它的扩展路径(例如它需要mydomain.com/random/而不是mydomain.com/mypage.aspx)。

如何在我的web.config页面中为aspx页面和根(默认)页面启用POST,以便我可以在本地开发我的应用程序?我相信IIS上的配置更直接。

谢谢。

+0

我有同样的问题。你找到新的东西了吗? – Ben 2011-05-04 11:01:22

+0

我发现的所有内容都是它在IIS上正常工作,但不在本地。我在下面的解决方案是一个快速入侵本地修复它,但它工作正常。 – Max 2011-05-04 14:29:02

回答

0

我发现一个可行的解决方案,通过在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); 
    } 
} 
1

迷人。直到我尝试过,我才相信它。在VStudio的网络服务器上运行此操作时,我可以通过将<add verb="*" path="/" type="System.Web.UI.Page"/>添加到<httpHandlers>部分来解决这个问题。诀窍是,它并没有实际显示默认页面,或者运行Page_Load事件。我将System.Web.UI.Page替换为默认页面的名称空间和类型,这次Page_Load事件运行,但.aspx文件中的标记似乎已被忽略。在Page_Load事件中对Response.Write()的调用确实导致输出到浏览器。

所以,也许这对自己有用,或者它可能会指向正确的方向。

我也不知道这可能会产生哪些副作用,所以请谨慎行事。

编辑:你想要的类型可以发现的machine.config-- System.Web.UI.PageHandlerFactory

+0

这是在底部的答案(你的编辑)? – Max 2011-03-17 16:38:28

+0

是的 - 您可以在我之前展示的web.config修改中使用该类型。关于副作用的免责声明包括:) – joelt 2011-03-18 23:13:25

0

不认为你可以...不是本地主机的,实际上你把你的应用程序在一台服务器上FB服务器可以看到的网页,那么你的应用程序应该工作。