#asp.net #dll #external #no-cache
#asp.net #dll #внешний #нет кэша
Вопрос:
Я работаю на сайтах регистрации как часть своей работы, и появляются шаблоны, которые я пытаюсь перенести в центральную BasePage
DLL. Здесь я создал полезные и повторно используемые методы в прошлом, такие как методы, помогающие отправлять электронные письма и настройки внедрения зависимостей для Ninject.
Возможно, было бы полезно отметить, что BasePage
это ссылка, которую я добавляю на веб-сайт.
В этом случае я хотел, чтобы сеанс истек, чтобы, когда кто-то использует событие возврата браузера, делегат не мог повторно отправить свою информацию.
Код, который я использую, это:
// Stop Caching in IE
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
// Stop Caching in Firefox
Response.Cache.SetNoStore();
Это работает, поэтому я подумал, что было бы полезно иметь в моем BasePage
классе метод, который я мог бы вызвать для отключения кэша, и сократить вызов для этого на странице до одной строки.
Проблема в том, я думаю, что это частично связано с тем, что BasePage
это библиотека DLL, на которую ссылаются, если я использую вызов метода из моей BasePage
библиотеки dll, кэш не отключается.
Кто-нибудь знает, есть ли способ, которым я могу использовать вызов этого метода из моей BasePage
библиотеки dll, чтобы отключить кэш на странице, или я должен сохранить его локальным для веб-сайта?
ОБНОВЛЕНИЕ 07/07
Нашли кое-что интересное.
Несколько сайтов предлагают использовать переменную сеанса, чтобы определить, возвращается ли кто-либо на страницу. если это вы, то перейдите на страницу остановки.
Вам нужно, noCache
чтобы страница повторно инициировала Page_Load
событие
Но я также обнаружил: у меня есть страница, содержащая вышеупомянутый код, но у меня есть пользовательская проверка, которая должна попасть на сервер для проверки и возвращает ошибку проверки. При исправлении, чтобы значение было действительным, затем повторной отправке. Нажатие назад говорит о том, что срок действия страницы истек.
Итак, если я изменю всю проверку так, чтобы EnableClientScript
было false, любая ошибка приведет к тому, что веб-сервер отключит время ожидания события кнопки возврата после его успешной отправки.
Это не исправляет проблему полностью, но это остановит людей, нажимающих назад в конкретном случае, когда они вводят недопустимое значение.
Приветствия
Luke
Комментарии:
1. Не должно иметь значения, находится ли код на базовой странице или на производной странице, или базовая страница находится в sperate DLL или нет. Вы уверены, что код вызывается в обоих случаях, более вероятно, что какая-то логическая ошибка препятствует вызову метода базовой страницы, а не он не работает.
2. Это то, что я думал, код определенно вызывается, я проследил его до dll. По какой-либо причине это вызывает другое поведение. Я попробую еще раз завтра, возможно, он был кэширован, кто знает.