C# UWP AppServiceConnection未获取值

C# UWP AppServiceConnection未获取值,c#,uwp,C#,Uwp,我正在尝试通过AppServiceConnection在主机应用程序和服务之间进行通信。我正在主机应用程序中使用以下代码: using (var connection = new AppServiceConnection()) { connection.AppServiceName = extension.AppServiceName; connection.PackageFamilyName = extension.PackageFamilyName; var con

我正在尝试通过
AppServiceConnection
在主机应用程序和服务之间进行通信。我正在主机应用程序中使用以下代码:

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;
    }
}
和我的服务代码:

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();
}
这在某些情况下有效,但在其他情况下,
ValueSet
returnValue
)在主机接收时随机为空。当在服务中返回时,它有
,但当我在主机中得到响应时,什么都没有

我已经验证了服务确实在设置值,将其添加到
ValueSet
并正确返回

请注意,我的服务正在接收请求,主机正在接收响应,响应状态为
Success
;连接失败不是问题所在

有时,在请求重新开始工作之前,这种情况只发生一次,而在其他情况下,它将连续发生十次

故障后的第一个工作响应总是比正常情况下需要更长的时间

另外,我在从主机到服务的请求中没有任何问题。出现问题的地方总是服务于主机


还有其他人遇到过这个问题并解决了吗?

在创建示例应用程序的过程中,我意识到了问题所在。在我的行
var messageDeferral=args.GetDeferral()之前,我正在执行一个异步操作(尽管很短)。这似乎允许后台任务在响应主机之前关闭。只需将该行移到
OnRequestReceived
函数的开头,我就解决了这个问题


因此,对于遇到类似问题的任何人,在做任何其他事情之前,先获得延期不要再为我所经历的痛苦而烦恼。

您的连接是否可能在接收消息的过程中得到处理?我不喜欢使用(),我会保持连接打开,直到我确定不需要它。另外,如果你能拿出最简单的示例并将其放到github上,那就太好了。@AndreyAshikhmin使用
删除
,并在适当的时候手动处理,对我来说并没有任何改变。我会试着为GitHub想出一些东西。