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想出一些东西。