问题标签 [mobileserviceclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
148 浏览

asp.net - 无法在 Azure ASP.NET 后端对 MobileServiceClient 进行身份验证

我有基于 Visual Studio 2019 模板的 ASP.NET Web 应用程序 (.NET Framework),并带有个人用户帐户的自定义身份验证。

它适用于邮递员。我能够获得标记为 [Authorize] 的令牌和访问控制器

我正在为用于离线同步的 MobileServiceClient 身份验证而苦苦挣扎。客户端是这样初始化的:

这里有一些测试代码:

测试抛出异常:

+ ex {Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:请求无法完成。(未经授权)在 Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.ThrowInvalidResponse(System.Net.Http.HttpRequestMessage 请求,System.Net.Http.HttpResponseMessage 响应)[0x001d2] 在:0 在 Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.SendRequestAsync(系统.Net.Http.HttpClient 客户端,System.Net.Http.HttpRequestMessage 请求,System.Boolean ensureResponseContent,System.Threading.CancellationToken cancelToken) [0x00121] 在 Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.RequestAsync (System.Boolean UseHandlers) 处:0 , System.Net.Http.HttpMethod 方法, System.String uriPathAndQuery, Microsoft.WindowsAzure.MobileServices.MobileServiceUser 用户, System.2[TKey,TValue] requestHeaders, System.Threading.CancellationToken cancellationToken) [0x000f0] in <d385e67aff524dc7bd2d27425b9e81ae>:0 at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.ReadAsync (System.String uriString, Microsoft.WindowsAzure.MobileServices.MobileServiceFeatures features) [0x0009c] in <d385e67aff524dc7bd2d27425b9e81ae>:0 at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.ReadAsync (System.String query, System.Collections.Generic.IDictionary2[TKey,TValue] 参数,Microsoft.WindowsAzure.MobileServices.MobileServiceFeatures 功能)[0x00136] 在 Microsoft.WindowsAzure.MobileServices.Sync.PullAction.ProcessTableAsync () [0x00134] 在 :0 在 Microsoft.WindowsAzure.MobileServices。 Sync.TableAction.ExecuteAsync () [0x00251] 在 Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceSyncContext.ExecuteSyncAction 的 0 中(Microsoft.WindowsAzure.MobileServices.Sync.SyncAction 操作)[0x00090] 在 Microsoft.WindowsAzure.MobileServices 的 0 中。 Sync.MobileServiceSyncContext.PullAsync(System.String tableName,Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceTableKind tableKind,System.String queryId,System.String 查询,Microsoft.WindowsAzure.MobileServices.MobileServiceRemoteTableOptions 选项,System.Collections.Generic.IDictionary2[TKey,TValue] parameters, System.Collections.Generic.IEnumerable1[T] 相关表,Microsoft.WindowsAzure.MobileServices.MobileServiceObjectReader 阅读器,System.Threading.CancellationToken cancelToken,Microsoft.WindowsAzure.MobileServices.Sync.PullOptions pullOptions) [0x00361] 在:0

  1. 如果我尝试在邮递员的 token.Access_Token 中收到的令牌,它可以工作
  2. 如果我尝试在没有 [Authorize] 的情况下与控制器同步,它会起作用。
  3. 这是来自 Azure 日志流的消息:

*2020-04-15 18:20:10 xxxBACKENDxxx POST /token X-ARR-LOG-ID=c0abefa4-8754-47e2-966d-add7716e6a95 443 - 000.000.000 ZUMO/4.1+(lang=Managed;+os=iOS ;+os_version=13.3;+arch=MacOSX;+version=4.1.2.0) - - xxxBACKENDxxx.azurewebsites.net 200 0 0 1825 1377 6312

2020-04-15 18:20:10 xxxBACKENDxxx GET /tables/Brand $filter=(updatedAt%20ge%20datetimeoffset'2020-04-06T21%3A05%3A17.7200000%2B00%3A00')&$orderby=updatedAt&$skip =0&$top=50&__includeDeleted=true&X-ARR-LOG-ID=287a5464-caad-43be-a3c5-25245e0f9f49 443 Simulator8 000.000.000 ZUMO/4.1+(lang=Managed;+os=iOS;+os_version=13.3;+arch =MacOSX;+版本=4.1.2.0) ARRAffinity=62f587f816224cc3b867889be38db42f5322e4bdb4b71703dac6a261166d1545;+.AspNet。Cookies=rpLpkcIS9jfvK1FyWL6q-2_5ImjYFR9yB1ZiIPd4iiTxHAGL5A0CFu4qihtFZmu-GKKQzVQ5hoxReQGQVpS7w2a0jnjvvFL4dpe_wS9_7nfTxMTBuDXiKDHGZBakbd28UR1CWvyq7iFDUI8AkKj1zrM2uYz93kpg1WMQCSx-Z3tREike74S3LqUOCnRuPjil-wMqOzDDDTJKL9JLQZ750MbQbT_-DLmj31qMa55emfGgUcSEM7I5ksMD2IIMvEeAEqwsp-XKyhp17utOTy5OepSqO8lxrGLng96GY-shVFBP4gDt7YP2bNS3RCtXkCWSOve4g7ckWDud8SAOk1KRpkj4k-B9ZogpAqc9Zuz0idTBruY3HZ3sTHCw__atnd8DQVwNQtEu8kX1Cz2WFbkO35GHOULA7TvKyGiJu-LOpf2-SZPoNl12lqH0jdvT1kI32WF2RDKbQ2W9eyWzURHOsUvekcg5EJOZUDEehXYfbo0 - xxxBACKENDxxx.azurewebsites.net 401 0 0 543 2837 46*

用户名正确。但是,如果我不从 LoginAsync 调用 GetAuthenticationToken 并将令牌手动传递给 user.MobileServiceAuthenticationToken 那么结果是:

2020-04-15 18:15:34 xxxBACKENDxxx GET /tables/Brand $filter=(updatedAt%20ge%20datetimeoffset'2020-04-06T21%3A05%3A17.7200000%2B00%3A00')&$orderby=updatedAt&$skip =0&$top=50&__includeDeleted=true&X-ARR-LOG-ID=c3bcf13e-b270-4d58-897f-58cfb9727e56 443 - 000.000.000。ZUMO/4.1+(lang=Managed;+os=iOS;+os_version=13.3;+arch=MacOSX;+version=4.1.2.0) - - xxxBACKENDxxx.azurewebsites.net 401 0 0 543 2249 4625

因此,设置用​​户似乎没有任何效果。

为什么我无法验证我的 MobileServiceClient 的任何想法?

0 投票
0 回答
35 浏览

xamarin.forms - 未找到 MobileServiceClient IMobileServiceSyncTable PullAsync 资源

这个错误“

WindowsAzure.MobileServices 您要查找的资源已被删除、名称已更改或暂时不可用”

尝试从连接到应用服务的 Azure SQL Db 检索记录时发生。它发生在下面的代码行

在哪里;

我已阅读有关此错误的所有 SO 引用,但找不到解决方案。我不确定 Azure SQL Db 上的表是否与移动客户端上的类有一些差异,是权限问题还是什么。

所以在这个阶段,我正在寻求关于如何调试、寻找什么的建议(在异常细节方面找不到任何帮助我的东西)。或者也许如何在服务器端正确创建表。我在玩 ToDoItem 示例时看到,小事情可能会阻止成功连接,例如拼写错误、EF 在服务器表名称上使用复数、小写 id 等。尝试了所有这些事情但仍然是同样的错误。

Azure SQL 表结构;

这是移动客户端类;