2

私は奇妙な問題を抱えています。これがシナリオです

ここに私のファイルがあります:

  1. Project1.aspx
  2. Project2.aspx

これらは、Page_Load 関数を含め、まったく同じように設定されています。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

If (Not Page.IsPostBack) Then

   setPrevIndex(-1)

   ...

   End If


End Sub

どちらもこのように設定されています。

ここで私は問題に直面しています。これらのページのいずれかに移動するときは、(関数を介して) prevIndex が -1 に設定されていることを確認する必要があります。

  • Project1.aspxの場合、ページに移動すると、Page_Load が発生します。
  • Project1.aspxの場合、ページを更新すると、Page_Load が発生します。
  • Project1.aspxの場合、ブラウザーのナビゲーション バーで [移動] を押して現在のページに戻ると、Page_Load が発生します。

  • Project2.aspxの場合、ページに移動すると、Page_Load が発生します。
  • Project2.aspxの場合、ページを更新すると、Page_Load が発生します。
  • Project2.aspxの場合、ブラウザーのナビゲーション バーで [移動] を押して現在のページに戻ると 、Page_Load がまったく起動しません。 関数は呼び出されません。

なぜ何かアイデアはありますか??? これは何が原因でしょうか?

説明を求めてください。

アップデート:

同じURLを指しているURLで「Go」を押すと、再ロードされるのはマスターページだけのようですが、Load_Pageイベントも発生しません...

他の提案はありますか?

ありがとう、E

4

9 に答える 9

6

出力キャッシュを無効にしてみて、問題が引き続き発生するかどうかを確認してください。

<system.web>
  <caching>
    <outputCache enableOutputCache="false"/>
  </caching>
<system.web>
于 2009-07-20T15:38:03.767 に答える
3

LiveHTTPHeadersまたはFiddlerを使用して、ページが実際に毎回同じ方法で要求されていることを確認します。これは、キャッシュの問題である可能性があります。

于 2009-07-10T20:16:34.710 に答える
3

ウェブサイトをローカルにロードして、http://yourwebsite/trace.axd

これは、各ページのサーバー トレースとサーバー ステータスを示しています。また、タイミングを含む完全なページ ライフサイクルも示します。

現在のトレースをクリアしてから、3 回のアクセスを繰り返し、それぞれを Project1.aspx と Project2.aspx に再読み込みします。

trace.axd は現在何を示していますか? それぞれステータス コード 200 と動詞 GET を持つ 6 つのエントリが必要です。

数が少ない場合、問題は何らかのキャッシングです。

6 つある場合は、最後の 1 つの詳細を確認してください。ページ イベントのライフサイクルには何が表示されますか? また、完全な WebForm コントロール階層も表示されるため、これがマスター ページに関連している場合は、それがわかります。

于 2009-07-21T07:20:00.063 に答える
1

キャッシュに関連するさまざまなことが原因で、特に「実行」ボタンを押すだけの場合にリクエストが行われない可能性があるため、キャッシュヘッダーを確認する必要があります。

キャッシングが問題になる場合は、次のようなことができます。

//ask browser to revalidate:
context.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
//and hint that the page is outdated anyhow...
context.Response.Cache.SetMaxAge(TimeSpan.Zero);

これは、ページビューごとに実際に新しいバージョンを取得するようにブラウザを説得する必要があります。たとえば、これらの変数をPage_Load自体に設定できます;-)。httpsを使用していない場合は、以下もリスクがありません。

//prevents plugin based file-open in IE+https, otherwise fine:
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetNoStore();

これで解決すると思いますが、そうでない場合は、フィドラーを使用してリクエストが実際に行われていることを確認することを2番目に提案します(Web開発者なので、いずれにせよフィドラーを入手してください)利用できる便利なツールであり、すべてのブラウザで機能します!)。

最後に、[移動]をクリックしたときに、ページ上の他のコードが実行されているかどうかを確認できますか?(つまり、ページ全体が実行されていないか、Page_Loadだけです。後者はイベントワイヤアップエラーを示唆します。これは、ロードハンドラーが時々起動することを考えると奇妙です)。

于 2009-07-20T15:24:01.190 に答える
1

ページ初期化イベントでprevindexを-1に設定してみてください。しかし、なぜこれが起こっているのかわかりません。

于 2009-07-09T17:02:48.647 に答える
0

サーバー上の機能を取り除いてシナリオを再現してみてください。問題が解決しない場合は、いくつかのキャッシュカウンター方法を使用してみてください。そうでない場合、それはそれがあなたのコードでなければならないことを意味します。

于 2009-07-20T21:14:17.130 に答える
0

ページがキャッシュされているようです。これにより、Page_Load が起動しなくなります。どこにも設定していないことを確認してください。

于 2009-07-16T18:19:58.850 に答える
0

アプリケーションを別のマシンに公開しようとしましたか? IIS が何かをしている可能性があるので、最初にそれを排除してみてください。コードが両方の na で同一であると仮定すると、ページ名が異なるだけで (確認のために aspx ファイルと .cs ファイルで差分を作成します)、アプリケーションを別のサーバーに移動して再テストします。

それでも発生する場合は、ブラウザがおそらくキャッシュに関して何かをしているに違いありません。

于 2009-07-18T05:02:42.217 に答える
0

ページ (またはマスター ページ) の上部にこれ (または類似のもの) がある場合、次のようになります。

<%@ OutputCache Duration="3600" VaryByParam="none" %>
于 2016-05-05T14:51:50.677 に答える