顧客用のネイティブWindows 10クライアントLOBアプリケーションを開発します。
環境:Windows 10 Pro(モバイルクライアント/タブレットおよび開発者ボックス上)、アップデート3を適用したVisual Studio 2015 Professional、インストールされているすべてのアップデートおよびパッチ。クライアントアプリケーションは、最新の「Windows 8 UniversalおよびWindows 10 Universalプラットフォーム用IBM MobileFirst Platform SDK」バージョン8.0.2017012514を使用します。私のネットワーク上の別のマシンには、MobileFirst Platform ServerにJavaアダプタがあります。MobileFirst 8.0デバイスがオフラインの場合、C#WorklightResourceRequest.Send()がハングします
アプリケーションがオンラインで、MobileFirst Platform 8.0サーバーにアクセスできる場合、アプリケーションは非常にうまく動作します。
クライアントのネットワーク接続が失われた場合(WLANの到達範囲外またはMFPサーバーがオフラインなど)、サーバーへのすべての要求が無期限にハングします。デバイスがオフラインの場合を返さない
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(への呼び出し):次のサンプルC#コードを参照してください。また、Timeoutパラメータは効果がないようです(ドキュメントによると、これはミリ秒単位のタイムアウトになります)。
この動作は、クライアントアプリケーションのユーザビリティに悪影響を及ぼします。
ドキュメントを読むことから、設定されたタイムアウトの後にコールが返され、resp.Successフィールドがfalseであることが予想されます。
私は、WorklightResourceRequest.Send()の呼び出しがオフラインでハングアップしていないと想定しています。これはMobileFirst Platformライブラリのバグです。
この問題を回避する方法はありますか?ライブラリを正しく使用していませんか?
通常、Windows UWPアプリケーションのデフォルトのタイムアウトは90秒です。あなたのアプリは90秒以内に返答を表示していませんか? –
いいえ、アプリは単に永遠にハングアップします(と私は数時間ウェイトを持っています)。ネットワークが応答を返しても、通話は続行されません。 –
この問題は再現できます。この問題は次のリリースで修正される予定です。ありがとうございます.. –