2011-03-14 68 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服務器可以看到的網頁,那麼你的應用程序應該工作。