Azure MobileApp:InvokeApiAsync因InvalidOperationException失败
我正在试用Azure移动应用程序和最近发布的SDK 我创建了服务,starter Todo应用程序运行良好。然后我添加了facebook认证,这也起到了作用。我还想从该服务中获得一些额外的FB信息,因此基于github上的解决方案和示例应用程序,我添加了一个新的api 服务器端代码Azure MobileApp:InvokeApiAsync因InvalidOperationException失败,azure,azure-mobile-services,Azure,Azure Mobile Services,我正在试用Azure移动应用程序和最近发布的SDK 我创建了服务,starter Todo应用程序运行良好。然后我添加了facebook认证,这也起到了作用。我还想从该服务中获得一些额外的FB信息,因此基于github上的解决方案和示例应用程序,我添加了一个新的api 服务器端代码 public class AuthenticationController : ApiController { [Authorize] public async Task<JObject&g
public class AuthenticationController : ApiController
{
[Authorize]
public async Task<JObject> GetIdentity()
{
FacebookCredentials fb = await this.User.GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);
var result = new JObject();
if (fb != null)
{
var accessToken = fb.AccessToken;
result.Add("facebook", await GetProviderInfo("https://graph.facebook.com/me?access_token=" + accessToken));
}
return result;
}
private async Task<JToken> GetProviderInfo(string url)
{
var c = new HttpClient();
var resp = await c.GetAsync(url);
resp.EnsureSuccessStatusCode();
return JToken.Parse(await resp.Content.ReadAsStringAsync());
}
}
LoginAsync成功,我获得了用户ID和令牌,但InvokeApiAsync失败,出现以下异常
Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+<ThrowInvalidResponse>d__18.MoveNext () [0x0022f] in <filename unknown>:0
--- End of stack trace from previous location where exception was thrown ---
11-26 19:09:10.897 I/mono-stdout( 3514): at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+<ThrowInvalidResponse>d__18.MoveNext () [0x0022f] in <filename unknown>:0
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201
11-26 19:09:10.898 I/mono-stdout( 3514): --- End of stack trace from previous location where exception was thrown ---
11-26 19:09:10.898 I/mono-stdout( 3514): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170
11-26 19:09:10.899 I/mono-stdout( 3514): at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201
11-26 19:09:10.900 I/mono-stdout( 3514): at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142
at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:124
at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+<SendRequestAsync>d__1d.MoveNext () [0x0010d] in <filename unknown>:0
Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:您正在查找的资源已被删除、名称已更改或暂时不可用。
在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+d_u18.MoveNext()[0x0022f]中:0
---来自引发异常的上一个位置的堆栈结束跟踪---
11-26 19:09:10.897 I/mono标准输出(3514):在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+d_18.MoveNext()[0x0022f]中:0
在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/ExceptionServices/ExceptionServices/exceptionservicescommon.cs:143中的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c]
在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/CompilerServices/TaskAwaiter.cs:201中的System.Runtime.CompilerServices.taskwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)[0x00047]处
11-26 19:09:10.898 I/mono标准输出(3514):--来自引发异常的前一个位置的堆栈结束跟踪---
11-26 19:09:10.898 I/mono标准输出(3514):在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/ExceptionServices/ExceptionServices/exceptionservicescommon.cs:143
在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/CompilerServices/TaskAwaiter.cs:170中的System.Runtime.CompilerServices.taskwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task任务)[0x0002e]
11-26 19:09:10.899 I/mono标准输出(3514):在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/CompilerServices/TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task任务)[0x00047]中
11-26 19:09:10.900 I/mono标准输出(3514):在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/CompilerServices/taskwaiter/System/Runtime/CompilerServices/taskwaiter.cs:170中
在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/CompilerServices/TaskAwaiter.cs:142中的System.Runtime.CompilerServices.taskwaiter.ValidateEnd(System.Threading.Tasks.Task任务)[0x0000b]
在/Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/System/Runtime/CompilerServices/TaskAwaiter.GetResult()[0x00000]中
在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+d_u1d.MoveNext()[0x0010d]中:0
我错过了什么或做错了什么?
提前感谢。我在使用新的Azure应用程序服务示例项目的项目中遇到了类似的错误。我只是尝试使用自己的模型类从Azure db检索数据,而不是像您那样进行身份验证 以下是错误: Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: 您正在查找的资源已被删除,其名称为 已更改,或暂时不可用 事实证明,在我的移动服务器项目中,我有一个定义为
CorporateEvent
的模型,在我的客户端项目中,我有一个定义为CorporateEventModel
的相同模型。一旦我将客户项目中的模型重命名为CorporateEvent
,错误就消失了,我能够访问数据库
希望有帮助。请只发布相关代码,不要链接到外部代码源。另外,请正确设置错误消息的格式。我认为在调用“GetIdentity”时,身份验证头可能丢失。你能用小提琴来检查那个值吗?我认为您可以将Fiddler配置为Android仿真器的代理。您的控制器上是否有
[MobileAppController]
属性?要确认您是否缺少http请求头上的身份验证令牌,可以从`GetIdentity()中删除[Authorize]
`方法并重新部署您的服务,查看您是遇到相同的错误还是不同的错误。您在GetProviderInfo()
method中遇到问题了吗?你设定了什么权限?您可以使用“Graph API Explorer”生成具有所选权限的令牌。然后你可以用这个令牌测试你的代码。嘿,迈克尔,谢谢你的建议。。我在控制器上有[MobileAppController]
属性。我甚至尝试删除所有身份验证。基本上创建了一个新服务,只添加了一个新的ApiController
,其中包含一个GetIdentity
方法,该方法只返回一个字符串并获得相同的您正在查找的资源已被删除、名称已更改或暂时不可用。
错误。和小提琴手也没什么好运气。我通过fiddler代理了我的android设备。我看到所有应用程序的跟踪。但在移动应用程序中看不到任何内容。
Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+<ThrowInvalidResponse>d__18.MoveNext () [0x0022f] in <filename unknown>:0
--- End of stack trace from previous location where exception was thrown ---
11-26 19:09:10.897 I/mono-stdout( 3514): at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+<ThrowInvalidResponse>d__18.MoveNext () [0x0022f] in <filename unknown>:0
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201
11-26 19:09:10.898 I/mono-stdout( 3514): --- End of stack trace from previous location where exception was thrown ---
11-26 19:09:10.898 I/mono-stdout( 3514): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170
11-26 19:09:10.899 I/mono-stdout( 3514): at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201
11-26 19:09:10.900 I/mono-stdout( 3514): at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142
at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:124
at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+<SendRequestAsync>d__1d.MoveNext () [0x0010d] in <filename unknown>:0