1

これは、 Asp.net Static Variable Life time Across Refresh および PostBackの重複の可能性がありますが、私のクエリは少し異なります。

default.aspxというページを持つWebアプリケーションがあります。静的コンストラクターと静的プロパティ「MyProperty」を持つパブリック静的クラス「MyClass」があります。このクラスは default.aspx.cs クラスの外部にあります。

静的クラスのプロパティは、ページの読み込み時とボタンのクリック時に割り当てられます。

これで、クラスのプロパティが呼び出されるか割り当てられるたびに、型の静的コンストラクターが一度だけ呼び出されることがわかりました。これはあたりAppDomainです。その後、静的コンストラクターが呼び出されることはありません。

また、アプリ ドメインは、プロセス内にロードされた一連のアセンブリ間の分離レイヤーを提供する .NET コンストラクトであることも知っています。

ここでの私の質問は

  1. 誰かAppDomainがasp.netに関して詳しく説明してもらえますか? 関連リンクも役に立ちます。
  2. ポストバックごとにページ オブジェクトが作成および破棄されることはわかっています。では、次のコードでは、ポストバックがあるたびに静的コンストラクターが呼び出されるのでしょうか?

静的コンストラクターにブレークポイントを保持して、コードのデバッグを試みました。ページが初めて読み込まれたときにブレークポイントにヒットしましたが、ボタンをクリックしたときにはヒットしませんでした。しかし、IIS でホストされている場合にこれが同じように機能するかどうかはわからないので、専門家の意見を得たい. ブラウザはIE10でした。

文の構成が正しくなかったり、何か間違ったことを述べていない場合はお知らせください。

前もって感謝します。

よろしく、

サマール

public static class MyClass
{
    public static int MyProperty { get; set; }
    static MyClass()
    { 
    }
}
public partial class _Default : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        MyClass.MyProperty = 2;
    }



    protected void Button1_Click(object sender, EventArgs e)
    {
        MyClass.MyProperty = 1;
    }
}
4

2 に答える 2

2

このページのASP.NET プログラマーがアプリケーション ドメインについて知っておくべきことは、アプリケーション ドメインの説明に非常に適していると思います。

静的コンストラクターは、ポストバックごとではなく 1 回だけ呼び出されます (ご覧のとおり)。ブラウザーまたは IIS に基づいて異なる動作を期待する必要はないと思います。

于 2013-08-01T15:06:10.483 に答える
0

ここでは、アプリ ドメインはあまり関係ありません。しかし、あなたの好奇心があなたを殺しているなら: http://msdn.microsoft.com/en-us/library/ms173138(v=vs.80).aspx

実際のところ、静的コンストラクターは 0 回または 1 回呼び出されます。しかし、アプリケーションを実行するたびに、それ以上になることはありません。

静的コンストラクターは、アプリケーションの実行時にクラスが初めて参照されるときに呼び出されます。アプリケーションを再起動しない限り、再度呼び出されることはありません。クラスが使用されない場合、静的コンストラクターは呼び出されません。

したがって、基本的に、質問で説明している動作は完全に理にかなっています。ページ オブジェクトは毎回リロードされますが、静的コンストラクターは 1 回だけ呼び出されます。

于 2013-08-01T15:06:39.903 に答える