发生了“System.Net.WebException”类型的异常,位于“System.Windows.ni.dll”中。

8

我正在开发一款 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;
}

网页异常中的消息是什么? - chwarr
我不明白你的意思。这两行代码出错了。'System.Net.WebException'类型的异常在'System.Windows.ni.dll'中发生,但没有在用户代码中处理。如果有一个异常处理程序,程序可以安全地继续运行。 - faroke moahmed
网络异常:远程服务器返回错误:未找到。 - faroke moahmed
1个回答

4
由于某种原因,远程Web服务器似乎响应404未找到。也许服务器正在做正确的事情。如果是这样,您的应用程序需要以明智的方式处理此响应。也许它没有做正确的事情,您需要修复服务器组件中的错误。:-)
我将用两种不同的方法来解决应用程序崩溃问题。
首先,让我们处理此错误,以便应用程序不会崩溃。例如,我们将使用一些关于错误的详细信息填充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;
}

现在,当您运行带有调试器的调试版本时,如果选择Debug流,您应该能够在Visual Studio的输出窗口中看到跟踪输出。


我不明白你在问什么。正在检索什么?ID是什么?(这可能是一个新问题吗?) - chwarr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接