更改"此页面无法显示"到自定义页面

时间:2016-06-20 12:48:05

标签: c# asp.net browser offline display

我写了一个通过webbrowser表单加载页面的应用程序。加载页面是通过webbrowser_DocumentCompleted函数中的webbrowser.navigate完成的。这非常有效。但是如果应用程序没有网络,则显示"此页面无法显示" - 页面。是否可以显示自定义页面,如果是 - 如何?谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

您可以在应用程序启动时执行网络检查,如果失败,您可以将其重定向到错误页面吗?

在app.config中,您可以使用以下代码:

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

只要您的应用程序收到http错误代码404,它就会重定向到error.htm页面

答案 1 :(得分:0)

该页面由您的浏览器提供,应用程序,所以不,您无法更改它。
但是,您可以执行的操作是读取Web浏览器返回的HTML,检查它是否没有说明并采取相应措施。

示例:

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

答案 2 :(得分:0)

Yo可以创建一个自定义错误页面,并显示来自web.config的多个错误状态。

自定义错误页面

当ASP.NET应用程序中出现未处理的异常时,会显示以下三种类型的错误页面之一:

  • 异常详细信息黄色死亡屏幕错误页面,
  • 运行时错误黄色死亡屏幕错误页面,或

  • 自定义错误页面

默认情况下,所有类型的错误都会导致显示相同的自定义错误页面。但是,您可以使用HTTP status code部分中的<error>子元素为特定<customErrors>指定其他自定义错误页面。例如,要在页面未找到错误时显示不同的错误页面,其HTTP状态代码为404,请更新<customErrors>部分以包含以下标记:

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

答案 3 :(得分:0)

一种方法是处理WebBrowser的Navigated方法,然后尝试访问WebBrowser对象的Document对象的Domain属性。如果它无法访问域(例如当服务器关闭或不存在时),它将抛出错误。然后你只需要捕获错误并将你自己的HTML直接写入WebBrowser的Document对象,如下所示:

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