【发布时间】:2016-10-21 17:42:24
【问题描述】:
我编写了一个通过网络浏览器表单加载页面的应用程序。加载页面是通过 webbrowser_DocumentCompleted 函数中的 webbrowser.navigate 完成的。这工作得很好。但是,如果应用程序没有网络,它会显示“无法显示此页面” - 页面。是否可以改为显示自定义页面,如果可以 - 如何?感谢您的帮助。
【问题讨论】:
标签: c# asp.net browser offline display
我编写了一个通过网络浏览器表单加载页面的应用程序。加载页面是通过 webbrowser_DocumentCompleted 函数中的 webbrowser.navigate 完成的。这工作得很好。但是,如果应用程序没有网络,它会显示“无法显示此页面” - 页面。是否可以改为显示自定义页面,如果可以 - 如何?感谢您的帮助。
【问题讨论】:
标签: c# asp.net browser offline display
您可以在应用程序启动时执行网络检查,如果失败,您可以将其重定向到错误页面?
在您的 app.config 中,您可以使用以下代码:
<system.web>
<customErrors>
<error statusCode="404" redirect="error.htm"/>
</customErrors>
每当您的应用程序收到 http 错误代码 404 时,它都会重定向到 error.htm 页面
【讨论】:
您可以创建一个自定义错误页面,并将其显示为来自您的web.config 的多个错误状态。
自定义错误页面:
当 ASP.NET 应用程序中出现未处理的异常时,会显示以下三种错误页面之一:
运行时错误黄屏死机错误页面,或
自定义错误页面
默认情况下,所有类型的错误都会导致显示相同的自定义错误页面。但是,您可以使用 <customErrors> 部分中的 <error> 子元素为特定的 HTTP status code 指定不同的自定义错误页面。例如,要在页面未找到错误(其状态代码为 404)时显示不同的错误页面,请更新 <customErrors> 部分以包含以下标记:
<customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPages/Oops.aspx">
<error statusCode="404" redirect="~/ErrorPages/404.aspx" />
</customErrors>
【讨论】:
一种方法是处理 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
【讨论】: