4

我有一个 jQuery Mobile 页面,可以在 iPhone (iOS 5+) 上的 Safari 中正常工作。当点击这个链接时......

@Html.ActionLink("Click to download", "Download", "Home")

...我被带到myapp.com/Home/Download

在 iPhone 上的 Chrome 中单击相同链接时,我被带到myapp.com/ (F(LzXF8gDEEPPgR7F_UZ0wf2uWg1e-aK1mgwtvzxCTIgflM43gYVEY06XIIq91OLlyjnRXo78AXHQLoXMUXRjOLKQltEhrsYgmTnSNsHzBfl01)) /Home/Download

有谁知道为什么 URL 变得如此混乱?(从该网址没有后续链接有效..)

4

3 回答 3

8

您的用户代理(浏览器)不支持 cookie 或禁用了 cookie。在这种情况下,ASP.NET 陷入了一种兼容模式,在这种模式下,它通过在 url 中附加会话 id 来跟踪用户会话。所以现在你所有的 url 都会有这个 id。这是完全正常的行为。

不仅 ASP.NET Session 会发生同样的情况,Forms Authentication cookie 也会发生同样的情况。您可以通过强制始终使用 cookie 为 web.config 中的 ASP.NET 会话禁用此行为:

<sessionState cookieless="UseCookies" />

显然,如果用户禁用 cookie,您的应用程序将简单地崩溃,因为它无法跟踪用户。表单身份验证 cookie 也是如此:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" cookieless="UseCookies" />
</authentication>
于 2012-07-02T16:12:08.493 回答
0

我意识到这是一个较旧的帖子,但是..

我相信这是最新版本的 chrome iOS v 30.0.1599 的错误

正如 Daren 所说,这是使用 URL 来保存身份验证数据的 .net 框架,否则这些数据将在身份验证 cookie 中。这称为无cookie 会话。

.net 不应将用户代理解释为不支持 cookie 的代理。

我将测试 Request.Browser.Cookies 添加到我的登录页面,并且看到此版本的 chrome 显示为错误。这肯定是 chrome 版本中的一个错误。这似乎只发生在一些回发之后,即使清除 cookie 和数据并兑现内容设置也不会自行解决。

解决的唯一方法是卸载 chrome 并使用 Safari。我正在使用ios7。

我很想知道如何解决这个问题,但目前我们建议使用 iOS chrome 的客户不要更新或使用 Safari 并卸载....

标记

于 2013-09-23T00:12:47.993 回答
0

我有同样的问题,

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" cookieless="UseCookies" />
</authentication>

解决了我的问题..

我认为您必须强制浏览器使用 cookie,因为当我检查 ipad 上的设置时,chrome 已经允许它们。

再次感谢..

于 2013-04-24T11:54:41.103 回答