У меня есть простая страница ASP-приложения, добавленная в проект SharePoint только для целей презентации, поэтому это страница веб-форм ASP размещена в SharePoint.Viewstate истекает через некоторое время для страницы приложения в SharePoint 2013?
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 номера" кнопку и добавление num1
и num2
Textboxes добавляется к res
текстовое поле и выбрано значение ListBox
показан на этикетке рядом с ним. Это работает безупречно, если для номера введены правильные значения, а элемент выбран в ListBox
.
Если страница оставлена (не взаимодействует) в течение 10-15 минут и нажата кнопка «ADD Numbers», то NullReferenceException
будет выбрано для list.SelectedItem.Value
, а также текстовые поля будут пустыми. Случилось так, что приложение находится в состоянии postBack (Page.IsPostBack
- правда), но viewstate не восстанавливается.
Я думаю, что это связано с тем, что ViewState перемещается в распределенный кеш с version 2013, но может кто-то прояснить это для меня и предложит мне самый эффективный способ обойти это без изменения конфигурации AppFabric, поскольку 10-15 минут извращения ViewState не приемлемо.