Facebook要求所有画布应用程序在iframe中支持HTTP POST而不是GET。但是,当我启用该功能时,ASP.net会抱怨
The HTTP verb POST used to access path '/' is not allowed
出于某种原因,Facebook要求路径中没有扩展名(例如,它需要mydomain.com/random/
而不是mydomain.com/mypage.aspx
)。
如何在我的web.config页面中为aspx页面和root(默认)页面启用POST,以便我可以在本地开发我的应用程序?我相信IIS上的配置更直接。
感谢。
答案 0 :(得分:1)
魅力。直到我尝试它,我才相信它。通过将<add verb="*" path="/" type="System.Web.UI.Page"/>
添加到<httpHandlers>
部分,我可以在VStudio的Web服务器中运行此异常。诀窍是,它实际上并没有显示默认页面,也没有运行Page_Load事件。我将System.Web.UI.Page
替换为我的默认页面的名称空间和类型,这次运行了Page_Load事件,但.aspx文件中的标记似乎已被忽略。在Page_Load事件中调用Response.Write()确实导致输出到浏览器。
所以,也许这本身就很有用,或者它可能指向正确的方向。
我也不知道这可能会产生什么副作用,所以请谨慎行事。
编辑:您可以在machine.config - System.Web.UI.PageHandlerFactory
答案 1 :(得分:0)
不认为你可以...而不是localhost,你实际上必须将你的应用程序推送到FB服务器可以看到的网络上的服务器,然后你的应用程序应该工作。
答案 2 :(得分: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);
}
}