2016-06-20 4 views
0

Я написал приложение, которое загружает страницу через форму веб-браузера. Загрузка страницы выполняется через webbrowser.navigate в функции webbrowser_DocumentCompleted. Это работает очень хорошо. Но если приложение не имеет сети, оно отображает «Эта страница не может быть отображена» - страница. Возможно ли отобразить пользовательскую страницу, а если да - как? Спасибо за помощь.Изменить «Эта страница не может быть отображена» на пользовательскую страницу

ответ

0

вы можете выполнить проверку сети в начале вашего приложения, и если она не удалась, вы можете перенаправить ее на страницу с ошибкой?

наоборот в вашем app.config вы можете использовать следующий код:

<system.web> 
<customErrors> 
    <error statusCode="404" redirect="error.htm"/> 
</customErrors> 

всякий раз, когда ваше приложение получит HTTP код ошибки 404 он будет перенаправлять error.htm страница

0

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

Пример:

//document completed function declaration 
{ 
     if (yourWebBrowser.Document.InnerHtml.Contains("This page cannot be displayed") 
     { 
      //Do Something 
     } 
} 
+0

Код, приведенный в примере, не работает. – tedder84

+0

InnerHtml не известен. – tedder84

+0

@ tedder84 вот что я имел в виду под «примером», он не тестировался –

0

Yo может создать специальную страницу ошибки и отобразить его для нескольких статусов ошибок с вашего web.config.

Пользовательские страницы ошибки:

Когда возникает необработанное исключение в приложении ASP.NET отображается один из трех типов страниц ошибок:

  • за исключением Подробности Желтый экран страницы ошибок Death ,
  • ошибка Желтый экран страницы ошибок Смерть или

  • Пользовательская ошибка р возраст

По умолчанию все типы ошибок вызывают отображение той же страницы пользовательских ошибок. Тем не менее, вы можете указать другую страницу пользовательских ошибок для определенного HTTP status code с использованием дочерних элементов <error> в разделе <customErrors>. Например, чтобы иметь другую страницу ошибки отображается в случае страницы не найдена ошибка, которая имеет код HTTP статуса 404, обновите раздел <customErrors> включить следующую разметку:

<customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPages/Oops.aspx"> 
    <error statusCode="404" redirect="~/ErrorPages/404.aspx" /> 
</customErrors> 
0

Один из способов сделать он должен обрабатывать метод Navigated вашего WebBrowser, а затем попытаться получить доступ к свойству Domain объекта Document объекта WebBrowser. Если он не может получить доступ к домену (например, когда сервер не работает или не существует), он выдаст ошибку. Затем вам просто нужно поймать ошибку и написать свой собственный HTML непосредственно в объект документа WebBrowser, например:

Private Sub WebBrowser1_Navigated(sender As Object, e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated 

    Dim doc As HtmlDocument = WebBrowser1.Document 

    Try 
     Dim s As String = doc.Domain 
    Catch ex As Exception 
     WebBrowser1.Document.Write("<html><body><br/><h1>The site you are trying to reach is offline or hasn't been set up yet. Please contact your system administrator.</h1></body></html>") 
    End Try 
End Sub 
+0

Добро пожаловать в SO, при ответе старайтесь избегать просто публикации блока кода. Вместо этого, найдите несколько минут, чтобы объяснить код и почему он работает. Для получения хорошего ответа см. [Рекомендации сообщества] (https://stackoverflow.com/help/how-to-answer). – LightBender

Смежные вопросы