3

単純な ASP アプリケーション ページをプレゼンテーション目的で SharePoint プロジェクトに追加したので、その ASP Web フォーム ページは SharePoint でホストされます。

HTML:

</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <asp:Label runat="server">Number 1:</asp:Label>
    <asp:TextBox ID="num1" runat="server"></asp:TextBox>
    <asp:Label runat="server">Number 2:</asp:Label>
    <asp:TextBox ID="num2" runat="server"></asp:TextBox>
    <asp:Label runat="server">Result:</asp:Label>
    <asp:TextBox ID="res" runat="server"></asp:TextBox>
    <asp:Button Text="ADD Numbers" runat="server" OnClick="Unnamed_Click" />
    <asp:ListBox runat="server" ID="list" />
    <asp:Label runat="server" ID="previousListValue"></asp:Label>
    <asp:Label runat="server">Exception:</asp:Label>
    <asp:TextBox ID="exception" runat="server"></asp:TextBox>
</asp:Content>

コードビハインドは次のとおりです。

public partial class Default : LayoutsPageBase
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            list.DataSource = new List<ListItem>() { 
                new ListItem("value1", "1"),
                new ListItem("value2", "2"),
                new ListItem("value3", "3"),
            };
            list.DataBind();
        }
    }

    protected void Unnamed_Click(object sender, EventArgs e)
    {
        try
        {
            res.Text = Convert.ToString(int.Parse(num1.Text) + int.Parse(num2.Text));
            previousListValue.Text = "Previous list selected value is: " + list.SelectedItem.Value;
            exception.Text = string.Empty;
        }
        catch (Exception ex)
        {

            exception.Text = ex.GetType().ToString() + "\t" + ex.Message;
        }
    }
}

「ADD Numbers」ボタンをクリックするnum1と、テキストボックスnum2の追加がテキストボックスに追加され、res選択された値がそのListBox横のラベルに表示されます。数値に正しい値が入力され、アイテムが で選択されている場合、これは問題なく機能しListBoxます。

ページが約 10 ~ 15 分間 (操作されずに) 放置され、[番号の追加] ボタンがクリックNullReferenceExceptionされると、 がスローされlist.SelectedItem.Value、textBoxes も空になります。何が起こったのかというと、アプリケーションは postBack 状態 (Page.IsPostBackは true) ですが、viewstate は復元されていません。

これは、バージョン 2013の時点で ViewState が分散キャッシュに移動されたことと関係があると思いますが、誰かがこれを明確にして、AppFabric 構成を変更せずにこれを行う最も効果的な方法を提案してもらえますか?倒錯は受け入れられません。

4

1 に答える 1