far*_*med 8 .net c# windows-phone-8-emulator
我正在开发一个Windows Phone 8应用程序.我尝试运行我的应用程序时出现此错误:
我的错误说明
System.Windows.ni.dll中出现"System.Net.WebException"类型的异常,但未在用户代码中处理.
我的代码
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;
}
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,远程 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;
}
Run Code Online (Sandbox Code Playgroud)
其次,我们首先要尽量避免错误。让我们确保客户端发送的请求有意义。您可以添加一些检测代码,以确保使用任何代替“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;
}
Run Code Online (Sandbox Code Playgroud)
现在,当您运行附加了调试器的调试版本时,当您选择“调试”流时,您应该能够在 Visual Studio 的“输出”窗口中看到跟踪输出。