使用Awesomium捕获网络错误

时间:2018-06-27 15:21:23

标签: c# error-handling awesomium

我正在使用Awesomium创建无头浏览器。我希望浏览器返回网络错误代码,所以我知道它是如何/为什么中断的。

using (WebSession session = WebCore.CreateWebSession(new WebPreferences() { CustomCSS = "::-webkit-scrollbar { visibility: hidden; }" }))
        {
            using (WebView browserTab = WebCore.CreateWebView(1100, 600, session))
            {
                Console.WriteLine($"Starting WebCore v{WebCore.Version}");
                BadExample(browserTab, baseURL);
            }
        }

    static void BadExample(WebView browser, Uri url) {
browser.Source = (url + "/anyhing").ToUri();
        browser.LoadingFrameComplete += (sender, returnFrame) =>
        {
//NetError Code
        };
}

如何使用enum NetError返回我想要的值?

1 个答案:

答案 0 :(得分:1)

您应该订阅事件IWebView.LoadingFrameFailed(在您的情况下为浏览器)。

只要页面上可以有很多框架,事件就会在每个框架中触发。下面是我在项目中使用的代码段。

private void ViewOnLoadingFrameFailed(object sender, LoadingFrameFailedEventArgs e)
{
    if (e.IsMainFrame)
    {
        var error = (NetError) e.ErrorCode;
        Logger.ErrorFormat("main frame loading failed: {0}-{1}", e.ErrorCode, e.ErrorDescription);
    }
    else
    {
        Logger.WarnFormat("frame #{0} loading failed: {1} - {2}", e.FrameId, e.ErrorCode, e.ErrorDescription);
    }
}