【问题标题】:Problem with getting byte array from stream in WCF Service从 WCF 服务中的流中获取字节数组的问题
【发布时间】:2011-07-30 22:21:17
【问题描述】:

编辑:抱歉,这里完全有问题。

编辑:再次从头开始:

我有一个 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 为空。这是我的问题对不起以前的版本我很累;)

【问题讨论】:

  • 注意:params 是保留关键字,不知道在没有@ 前缀的情况下如何使用它。
  • 另外说明,这里还有更多问题:sizeread 在示例中没有定义,仅此而已。
  • 我可以向你保证 Marshal.Copy 确实有效

标签: c# interop marshalling


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 2014-04-20
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多