Перенаправление страниц до того, как SQL оправдался - ASP.NET MVC - PullRequest
0 голосов
/ 21 декабря 2009

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

Однако страница перенаправляется до завершения действия БД, поэтому ничего не вставляется.

Я временно решил эту проблему, вставив Thread.Sleep, но я ищу альтернативу, которая делает его безупречным.

    If Not String.IsNullOrEmpty(returnUrl) Then
        Return Redirect(returnUrl)
    Else
        Dim db As New GlobalSecModelDataContext
        Dim logAdmin = New secAdminLog
        logAdmin.EmployeeNumber = userName
        logAdmin.What = "Logged in"
        logAdmin.DateLogged = DateTime.Now
        logAdmin.UserIP = Request.ServerVariables("REMOTE_ADDR")
        logAdmin.NetworkUser = Request.ServerVariables("REMOTE_USER")

        db.secAdminLogs.InsertOnSubmit(logAdmin)
        db.SubmitChanges()
        Session("LoggedInUser") = StrConv(userName, VbStrConv.ProperCase)
        Threading.Thread.Sleep(5000)
        Return Redirect("/Home")
    End If

Есть ли лучшее решение, которое было бы быстрее для пользователя, использующего систему, или использует Threading.Thread.Sleep(5000) лучший способ?

Я считаю Threading.Thread.Sleep(5000) не идеальным, поскольку транзакция с БД не всегда завершается в это время.

Любые предложения будут полезны. Заранее спасибо.

1 Ответ

1 голос
/ 21 декабря 2009

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

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