7

我们托管在 AppHarbor 上,并使用他们的 memcacher 插件,如他们的文档中所述进行设置:

<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom"
          customProvider="MemcachedSessionProvider" xdt:Transform="Insert">
  <providers>
    <add name="MemcachedSessionProvider"
         type="MemcachedProviders.Session.SessionStateProvider,MemcachedProviders"
         dbType="none" />
  </providers>
</sessionState>

我们看到的问题只能通过以下方式重现:

  1. 在 iOS Safari(或 twitter iphone 应用程序的内置 webkit 浏览器)中通过 twitter 缩短 URL 到 appfail.net:http://t.co/6tRXopEJ
  2. 单击我们的“运行演示”按钮,然后使用我们的演示帐户自动登录用户。

此时服务器发出302重定向到一个无效的URL,例如: http://appfail.net/(F(FckQ4UX0zD_WSxk_adpkk3YysHsYQS4TSVpljxmswyBqEAZ1q-YhW4KePrpYQfJ4KlLGaiyje_TbpeSARVyI8LioQ7Jp5EIc0Zm9u99IqRRkkoMh_wr-jrsrvje4J7KpUt1n87xEMzMeqHzpMz9ksm42IqNnf3F9B6GBwrnuA5EY_YsV0))/Applications

该 url 似乎包含一个 SessionID,其格式与 IIS 用于无 cookie 会话的格式相同。这也是有道理的,因为 IIS 可以配置为使用基于 UserAgent 的无会话 cookie - 因此它为什么只在移动 safari 中重现(尽管我不确定为什么它只发生在 t.co/ 重定向中,而不是什么时候发生直接加载页面)

奇怪的是——我们关闭了无 cookie 会话!正如您在上面的会话状态中看到的那样。我也尝试过设置 'cookieless="UseCookies"'... 不走运!

我添加了日志记录,甚至验证了系统在运行时配置为“UseCookies”。

所以,我想知道我们怎么可能只使用 RedirectToAction() 将用户重定向到无 cookie 的 URL?

我想知道这是否与自定义会话状态提供程序——MemcachedProvider 有关?还是更基本的东西?

谢谢山姆

4

2 回答 2

7

这可能是由于错误的 ASP.NET 客户端能力检测,请检查这个问题:Asp.Net Forms Authentication when using iPhone UIWebView

于 2012-06-12T16:29:25.643 回答
2

Microsoft于 2011 年 9 月发布了一个修补程序,它解决了我在 Windows 8 预览版中使用 IE10 时遇到的类似问题。

于 2012-06-20T18:33:41.303 回答