使用奇怪的路径值呈现链接

时间:2012-11-16 09:53:45

标签: asp.net-mvc iis sql-session-state

我在我们的日志中已经看过几次,用户也向我们报告过,但从未真正解决问题的根源。

有时,页面将从输出缓存中呈现,其中包含具有奇怪路径值的链接。说(X(3)S(5l53uwuaffkddojv4iwb3snm))。可能这是因为页面的第一个渲染具有这些链接,因此它们被缓存。

这意味着该页面上的所有网址都与此类似。

http://www.example.com/(X(3)S(5l53uwuaffkddojv4iwb3snm))/foo/bar/index.htm

这看起来与this question和MSDN文章“Understand How the ASP.NET Cookieless Feature Works”相同,只是我们在公共网站上使用会话或会话Cookie,但对于我们网站的99%,我们实际上并没有使用会话。其余1%使用会话cookie来提供用户体验,因此我不知道这是如何导致我们网站其他部分出现问题的。

上述文章的这一部分似乎引用了这个问题:

// Step 2: Check if we have already detected that Cookies are not 
//         supported. This is detected by looking for the string
//        "/(X(1))/" in the URL
If (URL-contains-"/(X(1))/")
   Report_cookies_are_NOT_supported_and_exit;

目前sessionstate看起来像这样:

<sessionState mode="SQLServer" sqlConnectionString="data source=myDatabase;user id=dbUsername;password=dbPassword" cookieless="false" timeout="10080" />

任何人对如何解决此问题有任何想法?有没有办法阻止这样的网址显示?

1 个答案:

答案 0 :(得分:1)

确保您已强制使用Cookie:

<sessionState cookieless="UseCookies" />

以及表单身份验证Cookie:

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

如果您不这样做并且有一个禁用了cookie的客户端浏览器,您将在URL中获得上述令牌。