6

次のように#includeファイルを参照するASP.NETマスターページがあります。

<!--#include virtual="/includes/scripts.inc"-->

ファイル/includes/scripts.incを変更しましたが、変更がページに表示されません。変更が反映されるようにするには、何をする必要がありますか?

私は次のことを避ける必要があります:

  • サーバーの再起動
  • IISを再起動します
  • web.configの変更(効果がないようです)
  • アプリドメインを再起動させるほとんどすべてのもの

他のオプションはありますか?IISが#includeファイルをキャッシュする時間に影響する設定はありますか?

4

4 に答える 4

4

まず、ご存じのとおり、ASP.NET で #include ディレクティブを使用しないでください。正しい解決策は、ユーザー コントロールまたはサーバー コントロールを使用することです。ただし、大量の HTML と Javascript をページに挿入する (つまり、サーバー側のコードを挿入しない) 場合は、Response.WriteFile を使用できます。

<%@ Page Language="vb"%>
<html>
<body>
    <% Response.WriteFile( "scripts.inc" ) %>
</body>
</html>
于 2010-08-01T16:16:24.500 に答える
3

サーバー側でもクライアント側でも、キャッシングとは何の関係もありません。コンパイルの問題です。#include は、変更されたときに ASP.NET の変更としてキャッチされないため、ページは再構築されません。

次の KB が役に立ちます: http://support.microsoft.com/kb/306575

于 2010-08-01T17:10:28.327 に答える
2

本当に静的なインクルードである限り、ファイルを C# コードにロードして自分で挿入するだけです。次に、ファイル依存関係でキャッシュに入れます。ファイルを変更した後、オブジェクトはnullになり、再度読み取るためのフラグが提供されます。

If it's not really static include (static == no ASP.NET controls - it can be very changeable otherwise - like a spew from a DB or different CSS for very user ) then you want to mess with page compilation and that's not going to happen unless you go and write your own template processor or something :-)

于 2010-08-04T14:46:56.543 に答える
1

変更が必要な可能性のあるファイルをキャッシュしている場合は、ファイル名にバージョン番号を含める必要があります。

例: <!--#include virtual="/includes/scripts-1.0.inc"-->

それを変更する必要がある場合は、インクルードを次のように更新します。

<!--#include virtual="/includes/scripts-2.0.inc"-->
于 2010-08-04T16:52:58.217 に答える