我为客户开发原生 Windows 10 客户端 LOB 应用程序。
环境:Windows 10 Pro(在移动客户端/平板电脑和开发人员盒子上),带有更新 3 的 Visual Studio 2015 Professional,安装了所有更新和补丁。客户端应用程序使用最新的“IBM MobileFirst Platform SDK for Windows 8 Universal and Windows 10 Universal 平台”版本 8.0.2017012514。在我的网络中的另一台机器上,我拥有带有 Java 适配器的 MobileFirst Platform Server。
当应用程序在线并且可以访问 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 库中的一个错误。
是否有解决方法,或者我是否错误地使用了该库?