Ссылки отображаются со странными путями

Я видел это несколько раз в наших журналах, и пользователи также сообщали об этом нам, но так и не добрались до сути проблемы.

Время от времени страница выводится из выходного кэширования со ссылками со странным значением пути. Скажем (X(3)S(5l53uwuaffkddojv4iwb3snm)), Предположительно это происходит потому, что первый рендер страницы имеет эти ссылки, и поэтому они кешируются вместе с ними.

Это означает, что все URL на этой странице выглядят примерно так.

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

Это выглядит идентично этому вопросу и статье MSDN " Понять, как работает функция ASP.NET Cookieless", за исключением того, что мы используем сеансы или файлы cookie сеанса для нашего общедоступного сайта, но для 99% нашего сайта мы фактически не используем сеансы, Оставшиеся 1% используют сессионные куки для удобства пользователей, поэтому я не вижу, как это вызывает проблемы с остальной частью нашего сайта.

Эта часть вышеупомянутой статьи, кажется, ссылается на проблему:

// 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 mode="SQLServer" sqlConnectionString="data source=myDatabase;user id=dbUsername;password=dbPassword" cookieless="false" timeout="10080" />

У кого-нибудь есть идеи, как мне решить эту проблему? Есть ли способ предотвратить отображение таких URL?

1 ответ

Убедитесь, что вы принудительно используете куки:

<sessionState cookieless="UseCookies" />

и для файла cookie аутентификации форм:

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

Если вы этого не сделаете и у вас отключен куки-файл с клиентским браузером, вы получите вышеупомянутый токен в URL.

Другие вопросы по тегам