2016-06-20 81 views
0

我编写了一个应用程序,该应用程序通过webbrowser表单加载页面。通过webbrowser_DocumentCompleted函数中的webbrowser.navigate完成加载页面。这工作得很好。但是,如果应用程序没有网络,则显示“此页面无法显示” - 页面。是否可以显示自定义页面,如果是 - 如何?感谢您的帮助。将“无法显示此页面”更改为自定义页面

回答

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

呦可以创建自定义错误页,并显示它从你的web.config多个错误状态。

定义错误页:

当未处理的异常在ASP.NET应用程序会显示三种类型的错误页面的一个出现了:

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

  • 自定义错误p年龄

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

<customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPages/Oops.aspx"> 
    <error statusCode="404" redirect="~/ErrorPages/404.aspx" /> 
</customErrors> 
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 
+0

欢迎来到SO,在回答时,尽量避免发布一段代码。相反,花几分钟时间来解释代码以及它的工作原理。请参阅[社区准则](https://stackoverflow.com/help/how-to-answer)以获得很好的答案。 – LightBender