Ссылка объекта ошибки не установлена ​​на экземпляр, если страница открыта более чем на несколько минут - PullRequest
1 голос
/ 21 июня 2010

У меня была проблема с моим интернет-обозревателем, когда при обновлении страницы также выполнялась кнопка отправки страницы, что приводило к двойному вводу данных.для этого мне нужно было исправить код страницы обновления, где он очистит кеш и сессию или не введет значения последней сессии.

со времени, когда я реализовал этот код, он дает мне

Ссылка на объект не установлена ​​на экземпляр

Вот код:

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        Session["DdlValue"] = DdlfacilityInsfindCsu.SelectedValue;
        if (!IsPostBack)
        {
            Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString());
            GetDdl();
            GetDdlIn();
        }
    }
    catch (Exception ex)
    {
        lblmess.Text = ex.Message.ToString();
    }
}
protected void Page_PreRender(object sender, EventArgs e)
{
    ViewState["CheckRefresh"] = Session["CheckRefresh"]; ---- This is for avoiding double entry on page refresh page .
}

protected void btnsubmitinsuranceentryCsu_Click(object sender, EventArgs e)
{
    //if (Page.IsValid)
    //{
        try
        {
            if (Session["CheckRefresh"].ToString() == ViewState["CheckRefresh"].ToString())
            {
                InsertDataI();
                Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString());
            }
        }
        catch (Exception ex)
        {
            lblmesss.Text = ex.Message.ToString();
        }
    //}           
}

Может ли кто-нибудь помочь мне в этом?

Спасибо.

Ответы [ 3 ]

1 голос
/ 22 июня 2010

Вот пример, как установить / увеличить время ожидания сеанса:

<system.web>
     <sessionState timeout="30" />
</system.web>

По умолчанию это 20 минут.

Вот статья на MSDN: http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx

1 голос
/ 22 июня 2010

Ваш сеанс, вероятно, истекает и дает вам значение NULL, так как оно больше не существует. Увеличьте время ожидания сеанса в файле Web.config.

0 голосов
/ 06 июня 2016

Решение, которое вы используете, на самом деле является хакерским.

" ... У меня была проблема с моим интернет-обозревателем, когда при обновлении страницы кнопка отправки также выполняла бы страницу, котораяприводил к двойному вводу данных ..."

Разве вы не должны выяснить причину, по которой SUBMIT запускался дважды?

Использование переменных сеанса и viewstate для обходавозможно более серьезная проблема, а именно ваша INSERT или хранимая процедура должна проверять наличие дубликатов перед попыткой другой INSERT.

Но, что более важно, почему браузер запускает другую SUBMIT?Возможно, ваш кэш не очищен или вы вызываете SUBMIT странным образом.

Я бы сначала изучил эти вещи, прежде чем использовать переменные Session [], чтобы скрыть реальную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...