【发布时间】:2018-05-12 23:10:44
【问题描述】:
我有一段时间在使用 Microsoft Azure 移动后端时遇到了一个奇怪的问题。通常第一个查询(自动用户检查)在第一次运行时失败,等待 30-60 秒后返回错误。在此错误之后,它可以完美运行。我大约在 24 小时内遇到过一次这个问题。
代码是:
Step1: 初始化后端(以及与此后端相关的表之后)
Backend.Primary = new Backend("https://....azurewebsites.net");
Step2:查询失败是
public async Task<Tuple<Result, TeguUsers>> FindUserPC1NIC(string mac)
{
try
{
IMobileServiceTableQuery<TeguUsers> query = TeguUsersTable.Where(user => user.M1Mac1 == mac || user.M1Mac2 == mac );
List<TeguUsers> result = await query.ToListAsync();
return CreateFoundUsersResult(result);
}
catch (MobileServiceConflictException msce)
{
return new Tuple<Result, TeguUsers>(new Result("Failed [msce]", msce.Message), null);
}
catch (MobileServicePreconditionFailedException mspfe)
{
return new Tuple<Result, TeguUsers>(new Result("Failed [mspfe]", mspfe.Message), null);
}
catch (MobileServiceInvalidOperationException msioe)
{
return new Tuple<Result, TeguUsers>(new Result("Failed [msioe]", msioe.Message), null);
}
catch (MobileServiceODataException msode)
{
return new Tuple<Result, TeguUsers>(new Result("Failed [msode]", msode.Message), null);
}
catch (Exception ex)
{
return new Tuple<Result, TeguUsers>(new Result("Failed", ex.Message), null);
}
}
之前我用的是一般异常,今天我添加了具体的异常。
你能告诉我如何解决这个问题吗?
更改我的代码中的任何内容?
在后端更改任何内容?
还有什么更高级的调试技术?
类似的异常消息是:
消息 请求无法完成。 (内部服务器错误)
请求 {方法: GET, RequestUri: 'https://....azurewebsites.net/tables/TeguUsers?$filter=(((((((M1Mac1 eq '####') 或 (M1Mac2 eq '####'))) 或 (M2Mac1 eq '### #')) 或 (M2Mac2 eq '####')) 或 (M3Mac1 eq '####')) 或 (M3Mac2 eq '####'))&$top=1',版本:1.1 , 内容: , 标题: { X-ZUMO-特点:TT X-ZUMO-安装 ID:7a813fc5-f5cd-47ce-97a2-9b388cb3e159 接受:应用程序/json 用户代理:ZUMO/4.0 用户代理:(lang=Managed;os=Windows;os_version=6.2.0.9200;arch=Win32NT;version=4.0.1.0) X-ZUMO-VERSION:ZUMO/4.0(lang=Managed;os=Windows;os_version=6.2.0.9200;arch=Win32NT;version=4.0.1.0) ZUMO-API 版本:2.0.0 }}
Request.Header {X-ZUMO-特点:TT X-ZUMO-安装 ID:7a813fc5-f5cd-47ce-97a2-9b388cb3e159 接受:应用程序/json 用户代理:ZUMO/4.0(lang=Managed;os=Windows;os_version=6.2.0.9200;arch=Win32NT;version=4.0.1.0) X-ZUMO-VERSION:ZUMO/4.0(lang=Managed;os=Windows;os_version=6.2.0.9200;arch=Win32NT;version=4.0.1.0) ZUMO-API 版本:2.0.0 }
请求.URI {https://....azurewebsites.net/tables/TeguUsers?$filter=((((((M1Mac1 eq '####') 或 (M1Mac2 eq '####')) 或 (M2Mac1 eq '####')) 或 (M2Mac2 eq 'F0761C70A89B')) 或 (M3Mac1 eq '####')) 或 (M3Mac2 eq '####'))&$top=1}
响应 {StatusCode:500,ReasonPhrase:“内部服务器错误”,版本:1.1,内容:System.Net.Http.StreamContent,标头: { 日期:格林威治标准时间 2017 年 10 月 20 日星期五 11:14:25 设置 Cookie:ARRAffinity=3fb8a85fa49f4f848d3e147fa888c4fd566bdbdf451e7fccb0737b58d905c69c;Path=/;HttpOnly;Domain=....azurewebsites.net 服务器:Microsoft-IIS/8.0 X-Powered-By: ASP.NET 内容长度:0 }}
堆栈跟踪
" 在 Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.d__24.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.d__26.MoveNext()\r\n--- 堆栈结束从先前引发异常的位置跟踪 ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\ n 在 Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.d__18.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (任务任务)\r\n 在 System.Runtime.CompilerServices。 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.d__20.MoveNext()\r\n--- 来自上一个引发异常的位置的堆栈跟踪结束 ---\r\n在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Microsoft.WindowsAzure.MobileServices.MobileServiceTable.d__18.MoveNext() \r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices。 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQueryProvider.d__81.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQueryProvider.<Execute>d__71.MoveNext()\r\n--- 堆栈跟踪从先前引发异常的位置结束 - --\r\n 在 System.Runtime.CompilerServices.Tas kAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQuery1.<ToListAsync>d__33.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\r\ n 在 d:\Visual Studio Projects\TeguSolutions\TeguDev.Azure.AMS.Table.TeguUsers\Azure.AMS.Table.TeguUsers.cs:line 中的 Tegu.Azure.AMS.Table.TeguUsers.MST.d__11.MoveNext() 144"
【问题讨论】:
标签: c# azure azure-mobile-services