0

我为客户开发本机Windows 10客户端LOB应用程序。
环境:Windows 10 Pro(在移动客户端/平板电脑和开发人员盒子上),Visual Studio 2015 Professional with Update 3,安装的所有更新和修补程序。客户端应用程序使用最新的“用于Windows 8 Universal和Windows 10 Universal平台的IBM MobileFirst Platform SDK”版本8.0.2017012514。在我的网络中的另一台机器上,我拥有带有Java适配器的MobileFirst Platform Server。MobileFirst 8.0 C#WorklightResourceRequest.Send()在设备处于脱机状态时挂起

当应用程序联机并且可以联系到MobileFirst Platform 8.0服务器时,该应用程序运行良好。

如果客户端失去其网络连接(例如WLAN无法访问或MFP服务器脱机),则所有到服务器的请求都会无限期地挂起。请参见下面的示例C#代码:

public async Task CallMethodMfp8() 
    { 
     Value = "Start MobileFirst Method Call " + DateTime.Now + "\n" + Value; 
     StringBuilder uriBuilder = new StringBuilder().Append("/adapters") 
      .Append("/MaximoAdapter") 
      .Append("/admin") 
      .Append("/heartbeat"); 
     WorklightResourceRequest rr = _client.ResourceRequest(new 
        Uri(uriBuilder.ToString(), UriKind.Relative), "GET", ""); 
     rr.Timeout = 500; 

     WorklightResponse resp = await rr.Send(); 

     if (!resp.Success) 
     { 
      Value = "NOT SUCCESSFULL " + resp.Message + "\n" + Value; 
     } 
     else 
     { 
      Value = "Request OK" + resp.ResponseText + "\n" + Value; 
     } 
     Value = "Method Call Finished " + DateTime.Now + "\n" + Value; 
    } 

如果设备处于脱机状态rr.Send()的调用不返回。此外,Timeout参数似乎不起作用(根据文档,这应该是以毫秒为单位的超时)。

此行为对客户端应用程序的可用性有负面影响。

通过阅读文档,我期望调用在配置的超时后返回并且resp.Success字段为false。

我假定在离线时不应该调用WorklightResourceRequest.Send(),并且这是MobileFirst Platform库中的一个错误。

有没有这方面的解决方法还是我错误地使用库?

+0

通常Windows UWP应用程序的默认超时时间为90秒。您的应用在90秒内没有显示任何回复? –

+0

不,应用程序只是永远挂起(我有几个小时的等待)。即使网络返回,通话也不会继续。 –

+0

我们可以重新创建这个问题,这个问题将在我们的下一个版本中修复。谢谢.. –

回答

0

问题已修复,修复将在下一个IFix中发布。

相关问题