Ich versuche zwischen meiner Host-App und dem Dienst über AppServiceConnection
zu kommunizieren. Ich verwende den folgenden Code in meinem Gast App:UWP AppServiceConnection bekommt keinen Wert
using (var connection = new AppServiceConnection())
{
connection.AppServiceName = extension.AppServiceName;
connection.PackageFamilyName = extension.PackageFamilyName;
var connectionStatus = await connection.OpenAsync();
if (connectionStatus == AppServiceConnectionStatus.Success)
{
var response = await connection.SendMessageAsync(requestMessage);
if (response.Status == AppServiceResponseStatus.Success)
returnValue = response.Message as ValueSet;
}
}
Und mein Servicecode:
private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
{
var messageDeferral = args.GetDeferral();
var message = args.Request.Message;
var returnData = new ValueSet();
var command = message["Command"] as string;
switch (command)
{
case "ACTION":
var value = await AsyncAction();
returnData = new ValueSet { { "Value", JsonConvert.SerializeObject(value) } };
break;
default:
break;
}
await args.Request.SendResponseAsync(returnData);
messageDeferral.Complete();
}
Dieser Teil der Zeit arbeitet, aber auch andere Zeiten die ValueSet
(returnValue
) ist zufällig leer, wenn der Host empfängt es. Es hat Value
drin, wenn es im Dienst zurückgegeben wird, aber wenn ich die Antwort im Host bekomme, nichts.
Ich habe überprüft, dass der Dienst in der Tat den Wert setzt, ihn zur ValueSet
hinzufügt und korrekt zurückgibt.
Beachten Sie, dass mein Dienst die Anforderung empfängt, der Host die Antwort empfängt und der Antwortstatus ist Success
; Eine fehlgeschlagene Verbindung ist nicht das Problem.
Manchmal geschieht dies nur einmal, bevor die Anfragen wieder funktionieren, zu anderen Zeiten wird es zehn Mal hintereinander passieren.
Die erste funktionierende Antwort nach einem Fehler dauert immer deutlich länger als normal.
Auch habe ich keine Probleme in der Anfrage von Host zu Service. Es ist immer ein Service, wo das Problem auftaucht.
Hat jemand anderes in dieses Problem gerannt und herausgefunden?
Ist es möglich, dass Ihre Verbindung während des Empfangs einer Nachricht entsorgt wird? Ich mag das nicht mit(), ich würde die Verbindung offen halten, bis ich sie nicht sicher brauche. Es wäre auch großartig, wenn Sie ein minimales Beispiel finden und es auf github setzen könnten. –
@AndreyAshikhmin Das Entfernen der Verwendung und das manuelle Entsorgen zur richtigen Zeit ändert nichts für mich. Ich werde versuchen, hier etwas für GitHub zu finden. –