私は仕事の一環として登録サイトに取り組んでおり、中央のBasePage
DLL にアクセスしようとしているパターンが表示されます。ここでは、過去に便利で再利用可能なメソッドを作成しました。たとえば、電子メールの送信を支援するメソッドや、Ninject の依存性注入のセットアップなどです。
BasePage
私がウェブサイトに追加したリファレンスであることに注意してください。
この場合、誰かがブラウザの back イベントを使用したときに代理人が情報を再送信できないように、セッションを期限切れにしたかったのです。
私が使用するコードは次のとおりです。
// Stop Caching in IE
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
// Stop Caching in Firefox
Response.Cache.SetNoStore();
それは機能するのでBasePage
、キャッシュを無効にするために呼び出すことができるメソッドをクラスに用意し、ページでこれを行うための呼び出しを1行に減らすと便利だと思いました。
問題は、これはBasePage
参照されている DLL であるという事実に部分的に関係していると思います.dll からのメソッド呼び出しを使用するとBasePage
、キャッシュが無効になりません。
BasePage
dll からこのメソッドを呼び出してページのキャッシュを無効にする方法があるかどうか、またはウェブサイトに対してローカルに保つ必要があるかどうかは誰にもわかりませんか?
更新 07/07
面白いものを見つけました。
いくつかのサイトでは、セッション変数を使用して、誰かがページに戻ってきたかどうかを判断することを提案しています。彼らがあなたである場合は、停止ページに向けて発砲します。
noCache
ページがPage_Load
イベントを再起動するために必要です
しかし、私は次のことも発見しました:上記のコードを含むページがありますが、検証のためにサーバーにアクセスする必要があり、検証エラーを返すカスタム検証があります。値が有効になるように修正してから、再度送信してください。戻ると、ページの有効期限が切れていると表示されます。
したがって、すべての検証を変更してEnableClientScript
false にすると、エラーが発生すると、正常に送信された後、戻るボタン イベントで Web サーバーがタイムアウトします。
これで完全に解決するわけではありませんが、無効な値を入力した特定のケースで人々が押し戻すのを止めることができます.
乾杯
ルーク