C# 在WCF服务中从流获取字节数组时出现问题

C# 在WCF服务中从流获取字节数组时出现问题,c#,interop,marshalling,C#,Interop,Marshalling,编辑:对不起,这里出了点问题 编辑:再次从头开始: 我有一个WCF服务,在我的程序的某个点上,我得到一个指向字节数组的指针。我想将字节从这个字节数组/指针复制到另一个字节数组并发送到客户端。 我还有一个测试程序,不是运行相同代码的WCF服务: uint read = 1; uint size = (uint)job.OutputFileParameters[1].ActualSize + 1; byte[] arrbyt =

编辑:对不起,这里出了点问题

编辑:再次从头开始:

我有一个WCF服务,在我的程序的某个点上,我得到一个指向字节数组的指针。我想将字节从这个字节数组/指针复制到另一个字节数组并发送到客户端。 我还有一个测试程序,不是运行相同代码的WCF服务:

            uint read = 1;
            uint size = (uint)job.OutputFileParameters[1].ActualSize + 1;
            byte[] arrbyt = new byte[job.OutputFileParameters[1].ActualSize + 1];
            unsafe
            {

                fixed (byte* buffer = arrbyt)
                {
                    int ind = 0;
                    while (read != 0)
                    {
                        str.RemoteRead(out *buffer, size, out read);

                    }

                }
            }

但在测试程序中,arrbyt被字节填充,一切正常,但在WCF服务中,arrbyt是空的。这是我的问题对不起以前的版本我累了

问题是相同的代码在WCF服务和普通windows应用程序中的结果不同。在WCF服务中,当RemoteRead读取0字节时,它将0放入arrbyt,在Windows应用程序中,读取0字节后,arrbyte保持原样,没有任何更改,内部有正确的值。

注意:params是保留关键字,不确定在不加@前缀的情况下如何使用它。另外注意,这还有更多的问题:例如,示例中没有定义大小和读取。我可以向您保证Marshal.Copy确实有效