Azure MobileApp:InvokeApiAsync因InvalidOperationException失败

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

我正在试用Azure移动应用程序和最近发布的SDK

我创建了服务,starter Todo应用程序运行良好。然后我添加了facebook认证,这也起到了作用。我还想从该服务中获得一些额外的FB信息,因此基于github上的解决方案和示例应用程序,我添加了一个新的api

服务器端代码

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