如果记录不存在,azure方法会爆炸

时间:2015-06-10 17:29:31

标签: azure azure-mobile-services

我在azure移动服务教程中使用此方法: await todoTable.LookupAsync(id)。我在id 1,2的表中有2行。 如果我做await todoTable.LookupAsync(1),它会起作用并返回记录。如果我做  await todoTable.LookupAsync(8)看看它是如何处理null的,它只是爆炸了Not Found异常。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

NULL表示 id = 8的记录,但其值为“NULL”。但在您的情况下,您没有记录。哪个是不同的。

如果您没有记录,您观察到的应该观察的内容。

这是基于REST的HTTP服务的标准。如果没有记录,则从服务中获得HTTP 404

Azure移动服务只不过是Web API和应用程序包装(管道)代码的组合。每个Web API调用不存在的记录都会导致HTTP 404错误。

正如评论中已经说过的那样,你应该围绕try - catch块包装你的代码并检查异常。

在.NET 4.5 / 4.6中,有新的HttpClient类型以及HttpResponseMessage和HttpRequestMessatge。前者有EnsureSuccessStatusCode()方法。其中,如果被调用将触发异常。

在旧版本的Framework中有WebClient类,如果HTTP状态代码不是200,则会抛出异常。

所以,最后,在最后 - 你观察到绝对正常的行为。只需阅读有关HTTP REST服务,HTTP VERBSHTTP Status Codes的更多信息。然后还要了解您使用的特定框架(.NET)如何处理HTTP状态代码。