我正在使用Azure Mobile Apps和部署插槽,登录服务提供商是Microsoft。在交换和用户重新登录期间,我有一些奇怪的行为。
AD的表现更好/不同吗? [读到它不适合GA吗?]
我正在开发人员插槽中开发,其中包含为此环境专门配置的所有内容,测试和更新正在运行。我将服务器上传到暂存,现在使用相同的数据库和设置(微软身份验证除外)。再次验证服务器在客户端和服务器上都有效。
然后我使用swap来更改暂存和生产槽。生产槽具有Microsoft Office帐户登录设置。
交换时,用户的登录将无限期地继续(没有超时,即几分钟没有任何停止运行),如果按照this link进行了引用令牌调用:
//retrieve user info
user = new MobileServiceUser(credential.UserName);
credential.RetrievePassword();
//refresh token
user.MobileServiceAuthenticationToken = credential.Password;
JObject refreshJson = (JObject)await ((App)Application.Current).MobileService.InvokeApiAsync(
"/.auth/refresh",
System.Net.Http.HttpMethod.Get,
null);
因此,我的初步问题是可以插入超时,例如通话2秒,强制用户重新输入凭据?
因为它似乎在用户注销然后以正常登录过程返回时有效:
user = await ((App)Application.Current).MobileService.LoginAsync(provider);
credential = new PasswordCredential(provider.ToString(), user.UserId, user.MobileServiceAuthenticationToken);
vault.Add(credential);
string newToken = refreshJson["authenticationToken"].Value<string>();
是否可以在MobileServiceClient.invokeApiAsync
来电时插入超时?
是否有一些设置可以设置,因此交换机制不会引入此问题?
有没有办法改善登录/重新登录流程,用户抱怨登录经常失败。我不能在其他情况下复制它,而不是在交换期间复制它。这可能是因为与服务器的距离?
因此Traffic Manager
会成为解决方案吗?但是,如果我使用的是Microsoft登录,我无法看到它应该如何启用。由于服务绑定到应用程序名称以进行身份验证。如何在这方面使用Traffic Manager
?
答案 0 :(得分:2)
是否有一些设置可以设置,因此交换机制不会引入此问题?
不确定这是否适用于您的情况,但是存在一个已知问题,即某些应用设置实际上导致交换问题。您是否定义了以 _EXTENSION_VERSION 结尾或以 WEBSITE_AUTH _ 开头的应用设置?如果是这样,请尝试删除它们,看看是否能解决您所看到的问题。
有没有办法改善登录/重新登录流程,用户抱怨登录经常失败。我不能在其他情况下复制它,而不是在交换期间复制它。这可能是因为与服务器的距离?
我从来没有像这样的问题。有关您可以提供的故障的详细信息,例如状态代码?您可以做的一件事是启用Application Logging,您应该能够获得有关刷新失败的详细信息。
因此,交通管理员会成为一个解决方案吗?但是,如果我使用的是Microsoft登录,我无法看到它应该如何启用。由于服务绑定到应用程序名称以进行身份验证。如何在这方面使用交通管理器?
我认为实现这项工作的方法是为流量管理器负载均衡的所有移动应用后端使用单个Microsoft帐户应用程序。配置的重定向URL需要使用在Traffic Manager中注册的公共主机名。
答案 1 :(得分:1)
是否可以在MobileServiceClient.invokeApiAsync调用上插入超时?
从API中,我们似乎无法在此方法中设置超时,有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/azure/mt691682%28v=azure.10%29.aspx?f=255&MSPPError=-2147217396。