MobileFirst 8.0 C#WorklightResourceRequest.Send()在设备离线时挂起

时间:2017-03-07 12:56:38

标签: c# ibm-mobilefirst windows-10-universal worklight-runtime

我为客户开发原生Windows 10客户端LOB应用程序 环境:Windows 10 Pro(在移动客户端/平板电脑和开发人员盒上),Visual Studio 2015 Professional和Update 3,安装了所有更新和补丁。客户端应用程序使用最新的“IBM MobileFirst Platform SDK for Windows 8 Universal和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库中的一个错误。

是否有针对此的解决方法或我是否错误地使用了库?

1 个答案:

答案 0 :(得分:0)

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