为什么在WP7模拟器中没有捕获到C#.NET WebException?

时间:2011-05-31 20:51:44

标签: c# .net rest windows-phone-7 httpwebrequest

我正在开发一个Windows Phone 7应用程序,我需要在我们公司的REST api上提供一些数据。

我正在测试这个API调用,并遇到了一个我无法捕获的WebException。我的电话最初是在一个lambda中,所以我把它拉出来用于成员函数,但仍然没有运气。

错误字符串是“远程服务器返回错误:NotFound”。这不是意料之外的,我的应用尝试的URI可能无效,因为我搞砸了,或者因为我们的登台服务器已关闭。

如果我无法捕捉到这个异常,我该怎么检查我的请求是否失败?

这是我的玩具示例:

void TriggerApiCall()
{
    var request = HttpWebRequest.Create(new Uri(
        "http://api.ourcompany.com" +
        "/stuff/" +
        someParameterizedPath + "?" +
        "firstParam=" + someClassMember +
        "&secondParam=8badf00d"));

    request.Method = "PUT";
    request.BeginGetResponse(TryCall, request);
}

private void TryCall(IAsyncResult result)
{
    HttpWebRequest request = result.AsyncState as HttpWebRequest;
    var completed = result.IsCompleted;
    WebResponse response = null;
    try {
        bool hasresp = request.HaveResponse;
        response = request.EndGetResponse(result);
    } catch (Exception e) {
        System.Diagnostics.Debug.WriteLine(e); // Never reaches here,
                                               // Exception propagates to top
    }
    response.Close();
}

1 个答案:

答案 0 :(得分:0)

研究告诉我Silverlight 3及更高版本中有一个新的ClientHttp堆栈。

http://msdn.microsoft.com/en-us/library/dd920295(v=vs.95).aspx