2012-07-02 36 views
4

我有一个jQuery Mobile页面,可在iPhone(iOS 5+)上的Safari中正常工作。而这个链接,当点击...iOS上的Chrome显示jQuery Mobile页面的奇怪URL(ASP.NET MVC)

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

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

当点击Chrome浏览器在iPhone上相同的链接我带到myapp.com/(F(LzXF8gDEEPPgR7F_UZ0wf2uWg1e-aK1mgwtvzxCTIgflM43gYVEY06XIIq91OLlyjnRXo78AXHQLoXMUXRjOLKQltEhrsYgmTnSNsHzBfl01)) /首页/下载

任何人有任何想法,为什么URL变得这么一团糟? (从该URL没有后续链接工程..)

谢谢!

回答

8

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

不仅在ASP.NET会话中,而且在使用Forms身份验证Cookie时也会发生同样的情况。你可以通过强制始终使用cookies在web.config中禁用此行为为ASP.NET会话:

<sessionState cookieless="UseCookies" /> 

显然,如果用户禁用cookie,您的应用程序将简单地崩溃,因为这将不能够跟踪用户。而且绝对是同样适用于表单身份验证cookie:

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

谢谢!但是,我的Chrome浏览器确实启用了Cookie。无论如何,它似乎像asp.net认为它没有。如果我在用户代理中禁用cookie,我甚至无法登录到该网站。如果我启用它,我可以登录,但ASP.NET仍然会看到一些问题并落入该兼容模式。然而,在<身份验证模式下,Cookieless =“UseCookies”...做到了诀窍。 – Cotten

+0

您不应该设置它,因为它默认使用cookie。 – MarkM

+0

看到我的回应,我觉得这是一个错误。 – MarkM

0

我有同样的问题,并

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

解决我的问题..

我的事情,你必须强制浏览器使用因为当我在我的ipad上查看我的设置时,Chrome已经允许他们。

再次感谢..

0

我意识到这是一个老帖子,但..

我相信这是与镀铬的iOS V的最新版本30.0.1599

作为达人的错误声称这是使用URL来保存认证数据的.net框架,否则认证数据将在auth cookie中。这被称为cookieeless会话。

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

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

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

我会活到知道如何解决这一点,但我们目前正在通知我们的客户谁使用iOS版Chrome浏览器不更新或使用Safari和卸载....

马克