2016-06-20 4 views
0

웹 브라우저 양식을 통해 페이지를로드하는 응용 프로그램을 작성했습니다. 페이지 로딩은 webbrowser_DocumentCompleted 함수에서 webbrowser.navigate를 통해 수행됩니다. 이것은 꽤 잘 작동합니다. 그러나 응용 프로그램에 네트워크가 없으면 "이 페이지를 표시 할 수 없습니다."- 페이지가 표시됩니다. 대신 사용자 정의 페이지를 표시 할 수 있습니까? 그렇다면 어떻게? 도와 줘서 고마워.변경 "이 페이지를 사용자 정의 페이지로 표시 할 수 없습니다"

답변

0

응용 프로그램 시작시 네트워크 검사를 수행 할 수 있으며 실패하면 오류 페이지로 리디렉션 할 수 있습니까? 다음과 같은 코드를 사용할 수 있습니다 귀하의 app.config에

다른 방법 라운드 : 응용 프로그램이 HTTP 오류 코드 (404)를받을 때마다

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

는 페이지

0

에게 error.htm로 리디렉션됩니다 해당 페이지는 귀하의 브라우저에 의해 부여되고 은 아니요 응용 프로그램이므로 아니요, 변경할 수 없습니다.
그러나 할 수있는 일은 웹 브라우저가 반환 한 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 응용 프로그램에서 발생 : 죽음의 오류 페이지의

  • 예외 세부 사항 노란색 화면 ,
  • 런타임 오류 노란색 죽음의 오류 페이지의 화면, 또는

  • 사용자 지정 오류 페이지 나이

기본적으로 모든 유형의 오류로 인해 동일한 사용자 지정 오류 페이지가 표시됩니다. 그러나 HTTP status code에 대해 다른 맞춤 오류 페이지를 지정하려면 <customErrors> 섹션 내의 <error> 하위 요소를 사용하십시오. 할

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

한 가지 방법은 예를 들어, 404HTTP 상태 코드가있는 페이지를 찾을 수 없습니다 오류의 경우에 표시되는 다른 오류 페이지를 가지고, 다음과 같은 마크 업을 포함 할 <customErrors> 섹션을 업데이트 WebBrowser의 Navigated 메서드를 처리 한 다음 WebBrowser 개체의 Document 개체의 Domain 속성에 액세스하려고 시도합니다. 서버가 다운되었거나 존재하지 않는 것처럼 도메인에 액세스 할 수없는 경우 오류가 발생합니다. 그런 다음 오류를 catch하고 다음과 같이 WebBrowser의 Document 개체에 직접 HTML을 작성해야합니다.

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

그래서, 응답 때, 그냥 코드 블록을 게시 피하려고 해. 대신 코드를 설명하고 왜 작동하는지 잠시 확인하십시오. 좋은 대답은 [커뮤니티 가이드 라인] (https://stackoverflow.com/help/how-to-answer)을 참조하십시오. – LightBender