【发布时间】:2021-01-05 18:31:55
【问题描述】:
我有一个 UWP 客户端应用程序,它使用 WCF 流传输模式与 Windows 服务应用程序通信:
var bnd = new NetTcpBinding(SecurityMode.None) { TransferMode = TransferMode.Streamed }
我在契约方法中使用了 Stream 对象作为请求和响应参数。
[OperationContract]
Stream RequestEncrypt(Stream data);
但我无法从 UWP 代码中的 Stream 对象响应中读取字节数组:
using (var memStream = new MemoryStream())
{
sourceStream.CopyTo(memStream);
byteArray = memStream.ToArray();
}
在上面的代码中,CopyTo 方法永远挂起。控制永远不会返回到下一行。 但这在 Windows 控制台客户端应用程序中运行良好。
有人有想法吗?
【问题讨论】:
-
默认情况下阻止 UWP 与本地主机的连接。查看 MSDN 中的“环回 UWP”
-
UWP 客户端和服务应用程序之间的连接工作正常。上例中调用 RequestEncrypt 方法后,客户端收到一个 Stream 对象。但我无法从收到的 Stream 对象中读取字节数组。仅当我在绑定中将 TransferMode 设置为 Streamed 时才会出现此问题。