Ссылки отображаются со странными путями
Я видел это несколько раз в наших журналах, и пользователи также сообщали об этом нам, но так и не добрались до сути проблемы.
Время от времени страница выводится из выходного кэширования со ссылками со странным значением пути. Скажем (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.