我正在尝试使用facebook c#SDK(v4.0.2),当facebook尝试重定向回SDK的重定向处理程序时遇到404错误。生成的URL为:
http://localhost:9152/facebookredirect.axd/elserdemo/Default.aspx?session={%22session_key%22%3A%222.GJsQK_BkApJNH8TncuFHpQ__.3600.1291665600-678938033%22%2C%22uid%22%3A%22678938033%22%2C%22expires%22%3A1291665600%2C%22secret%22%3A%22dnmnVip8JJ31rHUs2byKeQ__%22%2C%22base_domain%22%3A%22localhost%22%2C%22access_token%22%3A%22133477943366316|2.GJsQK_BkApJNH8TncuFHpQ__.3600.1291665600-678938033|xtjv95K4Lj_wg2-X3comNL4haG0%22%2C%22sig%22%3A%2241b1c3884488a9c9fa82b398c7fa80dc%22}
我将facebook应用设置为画布的iframe模式以及必要的迁移设置。我还确保画布URL指向我的本地开发服务器。但是,当浏览器尝试加载上面的URL时,我从ASP.NET获得了404。
如果pathinfo不包含句点,它可以正常工作并重定向到我的应用程序,所以看起来它是“default.aspx”中的句号,它搞砸了,但我不知道为什么。有什么想法吗?解决方法?
编辑:
虽然这与facebook SDK有关,但并不是特定于此。这显然是一个ASP.NET开发服务器问题。例如,如果我尝试加载:
http://localhost:9152/facebookredirect.axd/elserdemo/default.aspx
我得到了404.但是,如果我尝试加载:
http://localhost:9152/facebookredirect.axd/elserdemo/default
它可以工作,但最终我在iframe的facebook屏幕上显示404(因为默认在我的应用中无效)。
编辑#2:
这不是URL中无效字符的问题。如果是,我将收到400错误代码(错误请求)。相反,我收到404,它告诉我开发服务器正在尝试加载一个不存在的文件,而不是停在.axd并将其余的文件传递给Request.PathInfo。我不确定为什么这样做,所以这就是我在这里寻找的。
答案 0 :(得分:0)
您的应用未重定向到正确的地址。您正在获取FacebookSession
对象的序列化版本,而不是带有signed_request的查询字符串。
确保在Facebook应用配置页面上设置正确的值。
答案 1 :(得分:0)
您必须将重定向处理程序添加到web.config才能使重定向生效,只需将此行添加到您的web.config
<system.webServer>
<handlers>
<add name="facebookredirect.axd" verb="*" path="facebookredirect.axd"
type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
</handlers>
答案 2 :(得分:0)
点击重置前一个答案。
究竟是什么告诉浏览器转到此网址:http://localhost:9152/facebookredirect.axd/elserdemo/default.aspx
我问,因为Facebook应配置为只转到http://localhost:9152/,并且您在问题中指出,当Facebook重定向回您的网站时会发生这种情况。处理程序的名称不应该在URL中,这使我相信你在facebook本身中错误配置了应用程序。
自动为每个传入请求执行Web处理程序(如axd)。如果它检测到它需要根据请求流做某事,那么它就会。
答案 3 :(得分:0)
我得到了同样的错误 - 事实证明它与url的“扩展名”映射的mimetype有关。在您的情况下,ASP.NET开发服务器正在寻找mimetype“.12916656 ....”,或者更确切地说是url末尾的最后一段时间。
如果在本地计算机上切换到IIS,则可以使用通配符将默认mimetype设置为application / octet-stream(详细信息请参见下面的链接)。但是,在ASP.Net开发服务器中无法做到这一点:
http://support.microsoft.com/kb/326965
404错误和“找不到文件”异常似乎是服务器处理未定义的mimetypes的方式......非常令人困惑。