类型' System.Net.WebException'的例外情况发生在System.Windows.ni.dll中

时间:2013-11-11 10:42:52

标签: c# .net windows-phone-8-emulator

我正在开发Windows Phone 8应用程序。 当我尝试运行我的应用程序时收到此错误:

我的错误说明

  

发生了'System.Net.WebException'类型的异常   System.Windows.ni.dll但未在用户代码中处理。

我的代码

private async void buttonStringGet_Click_1(object sender, RoutedEventArgs e)
{
    JsonWebAsync.JsonWebClient client = new JsonWebAsync.JsonWebClient();
    var resp = await client.DoRequestAsync("myurl");
    string result = resp.ReadToEnd();
    resultText.Text = result;
}

1 个答案:

答案 0 :(得分:4)

无论出于何种原因,看起来远程Web服务器正在响应404 Not Found。也许服务器正在做正确的事情。如果是这样,您的应用程序将需要以合理的方式处理此响应。也许它没有做正确的事情,你的服务器组件中有一个错误需要修复。 : - )

我会以两种不同的方式解决应用程序崩溃问题。

首先,让我们处理此错误,以便应用程序不会崩溃。作为示例,我们将仅使用有关错误的一些详细信息填充resultText控件。由于我们没有关于请求应该做什么或响应是什么的详细信息,因此没有更强大的错误处理可以立即讨论。请记住,网络调用并不总是有效,因此即使您在下面的第二点处理,您也需要一些错误处理。

private async void buttonStringGet_Click_1(object sender, RoutedEventArgs e)
{
    JsonWebAsync.JsonWebClient client = new JsonWebAsync.JsonWebClient();

    string result;

    try
    {
        var resp = await client.DoRequestAsync("myurl");
        result = resp.ReadToEnd();
    }
    catch (WebException ex)
    {
         // generic error handling
         result = string.Format("Could not get data. {0}", ex);
    }

    resultText.Text = result;
}

其次,让我们首先尝试避免错误。让我们确保客户端发送的请求是有意义的。您可以添加一些检测代码,以确保使用的任何内容而不是“myurl”都是明智的。

private async void buttonStringGet_Click_1(object sender, RoutedEventArgs e)
{
    JsonWebAsync.JsonWebClient client = new JsonWebAsync.JsonWebClient();

    string requestUrl = ComputeRequestUrl(); // I assume this code exists somewhere.
    System.Diagnostics.Debug.WriteLine("Sending request for {0}", requestUrl);
    var resp = await client.DoRequestAsync(requestUrl);
    string result = resp.ReadToEnd();
    resultText.Text = result;
}

现在,当您运行附加了调试器的调试版本时,您应该能够在选择调试流时在Visual Studio的“输出”窗口中看到跟踪输出。