【问题标题】:ASP.NET development server doesn't accept dot in pathinfoASP.NET 开发服务器不接受路径信息中的点
【发布时间】:2010-12-06 18:13:47
【问题描述】:

我正在试用 facebook c# SDK (v4.0.2),当 facebook 尝试重定向回 SDK 的重定向处理程序时遇到 404 错误。结果网址是:

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 中出现 404 的 facebook 屏幕(因为默认值在我的应用程序中无效)。

编辑 #2:

这不是 URL 中的无效字符的问题。如果是这样,我将收到 400 错误代码(错误请求)。相反,我收到 404,它告诉我开发服务器正在尝试加载一个不存在的文件,而不是在 .axd 处停止并将其余部分作为 Request.PathInfo 传递。我不确定它为什么这样做,所以这就是我在这里寻找的。

【问题讨论】:

    标签: asp.net facebook facebook-c#-sdk


    【解决方案1】:

    您的应用未重定向到正确的地址。您将获得 FacebookSession 对象的序列化版本,而不是带有 signed_request 的查询字符串。

    确保您在 facebook 应用配置页面上设置了正确的值。

    【讨论】:

    • 这可能是我必须研究的问题,但我很确定它与当前问题无关。我编辑了我的帖子,请检查。
    【解决方案2】:

    您必须将重定向处理程序添加到您的 web.config 以便重定向工作,只需将此行添加到您的 web.config

      <system.webServer>
      <handlers>
          <add name="facebookredirect.axd" verb="*" path="facebookredirect.axd"
               type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
      </handlers>
    

    【讨论】:

      【解决方案3】:

      在之前的答案上点击重置。

      确切地说,是告诉浏览器转到此 URL:http://localhost:9152/facebookredirect.axd/elserdemo/default.aspx

      我问是因为 Facebook 应该配置为只转到 http://localhost:9152/ 并且您在问题中指出当 facebook 重定向回您的网站时会发生这种情况。处理程序的名称根本不应该出现在 URL 中,这让我相信您在 facebook 本身中错误地配置了应用程序。

      Web 处理程序(如 axd 的)会自动为每个传入请求执行。如果它检测到它需要根据请求流做某事,那么它会。

      【讨论】:

        【解决方案4】:

        我遇到了同样的错误 - 结果表明它与 url 的“扩展名”映射的 mimetype 有关。在您的情况下,ASP.NET 开发服务器正在寻找 mimetype“.12916656....”,或者更确切地说是 URL 末尾的最后一个句点。

        如果您在本地计算机上切换到 IIS,您可以使用通配符将默认 mimetype 设置为 application/octet-stream(详细信息在下面的链接中)。但是,在 ASP.Net 开发服务器中没有办法做到这一点:

        http://support.microsoft.com/kb/326965

        404 错误和“未找到文件”异常似乎是服务器如何处理未定义的 mimetypes...相当混乱。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-12
          • 2013-07-07
          • 2021-07-18
          • 1970-01-01
          • 1970-01-01
          • 2018-03-12
          • 2023-03-30
          相关资源
          最近更新 更多