Веб-страница для отправки запросов загружается в элемент управления WebBrowser на форме в VB.Net настольном приложении.
После нажатия кнопки Submit запрос сохраняется, но больше невозможно перемещаться по форме.
Ошибка:
Невозможно сериализовать состояние сеанса.В режимах «StateServer» и «SQLServer» ASP.NET сериализует объекты состояния сеанса, и в результате несериализуемые объекты или объекты MarshalByRef не допускаются.То же ограничение применяется, если аналогичная сериализация выполняется в хранилище состояний настраиваемого сеанса в режиме «Пользовательский».
Я настроил службу запросов для запуска на моем локальном компьютере и установил точку останова в началеподпрограмма сохранения.
Я также поставил точки останова в следующих событиях:
WebBrowser1_Navigating
WebBrowser1_Navigated
WebBrowser1_DocumentCompleted
Я запустил приложение и определил, где происходит исключение.
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
If Not WebBrowser1.IsBusy AndAlso WebBrowser1.ReadyState = WebBrowserReadyState.Complete AndAlso WebBrowser1.AllowNavigation Then
Dim errStr As String = String.Empty
If Not WebBrowser1.Document Is Nothing Then
If WebBrowser1.Document.Title = "404 - File or directory not found." Then
GoHome(False)
If StatusStrip1.Visible AndAlso Not WebBrowser1 Is Nothing AndAlso Not WebBrowser1.Url Is Nothing Then
ToolStripStatusLabel1.Text = String.Format("Requests - File or directory not found. ({0})", WebBrowser1.Url)
End If
ElseIf Me.WebBrowser1.Document.Title = "This page can’t be displayed" Then
Me.HasError = True
ElseIf StockObjects.Common.SPDebugEnabled Then
ToolStripStatusLabel1.Text = Me.WebBrowser1.Url.PathAndQuery
'ToolStripStatusLabel2.Text = Me.WebBrowser1.Url.Query.ToString
StatusStrip1.Refresh()
End If
If mIsFirstTime Then
Me.WebBrowser1.Refresh(WebBrowserRefreshOption.Completely)
mIsFirstTime = False
End If
End If
End If
End Sub
Private Sub WebBrowser1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
If Not Me.mIsRefresh Then
Me.WebBrowser1.Refresh(WebBrowserRefreshOption.IfExpired)
Me.mIsRefresh = True
If Me.WebBrowser1.Document.Title = "404 - File or directory not found." Then
Me.HasError = True
ElseIf Me.WebBrowser1.Document.Title = "This page can’t be displayed" OrElse Me.WebBrowser1.Url.LocalPath = "/navcancl.htm" Then
Me.HasError = True
End If
If StockObjects.Common.SPDebugEnabled Then
ToolStripStatusLabel1.Text = Me.WebBrowser1.Url.PathAndQuery
StatusStrip1.Refresh()
End If
End If
End Sub
Private Sub WebBrowser1_Navigating(sender As Object, e As WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
Debug.Print("WebBrowser1.AllowNavigation = " & WebBrowser1.AllowNavigation)
Debug.Print("e.Url.Query = " & e.Url.Query)
Debug.Print("Me.mLastLocation = " & Me.mLastLocation.ToString)
Debug.Print("e.Cancel = " & e.Cancel)
If Not HostUri Is Nothing AndAlso e.Url.Host = Me.HostUri.Host Then
If WebBrowser1.AllowNavigation Then
If e.Url.Query.Trim.Length > 0 Then
Me.mLastLocation = e.Url
Else
Me.mLastLocation = New Uri(String.Format("{0}{1}", e.Url, Me.HostUri.Query))
'e.Cancel = True
'WebBrowser1.Navigate(New Uri(String.Format("{0}{1}", e.Url, Me.HostUri.Query)))
End If
Else
e.Cancel = True
End If
Else
If Not WebBrowser1.AllowNavigation Then
e.Cancel = True
End If
End If
If StatusStrip1.Visible Then
ToolStripStatusLabel2.Text = Me.mLastLocation.ToString
ToolStripStatusLabel1.Text = e.Url.PathAndQuery.ToString
StatusStrip1.Refresh()
End If
End Sub
ВКод для формы приложения для настольного компьютера, события WebBrowser запускаются следующим образом:
Первая загрузка запроса на создание
WebBrowser1_Navigating
WebBrowser1_Navigated
WebBrowser1_DocumentCompleted
Перезагрузка запроса на создание (раскрывающийся список для настройки конфиденциальности запускает PostBack)
WebBrowser1_Navigating
WebBrowser1_Navigated
WebBrowser1_DocumentCompleted
Отправить запрос на создание
WebBrowser1_Navigating
Навигация в другом месте
WebBrowser1_Navigating
Сообщения об ошибках не отображаются.Я проверил значения всех переменных в событии WebBrowser1_Navigating, и единственное изменение - это Me.mLastLocation.
При переходе через код для формы Request_Add.aspx событие save обрабатывает запрос без исключения.Ошибка возникает в разметке.Линия, в которой это происходит, менялась во время тестирования, но всегда была встроенным кодом.Мне удалось переработать страницу, чтобы исключить все, кроме одной строки встроенного кода, и там каждый раз происходит сбой.Но только после отправки и сохранения записи.
Строка, в которой происходит сбой:
<%: Scripts.Render("~/bundles/modernizr") %>
Эта строка находится внутри PlaceHolder на странице Request.Master.aspx.разметка, как и на другой главной странице.
Буду признателен за любые предложения.Спасибо.