2011-04-06 5 views
0

편집 : 죄송합니다.WCF 서비스에서 스트림에서 바이트 배열을 가져 오는 중 문제가 발생했습니다.

편집 : 나는 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가 비어 있습니다. 이것은 이전 버전에 대해 유감스럽게 생각합니다.)

+0

메모 :'params'는 예약어로'@ '앞에 접두어를 붙이지 않고 어떻게 사용하고 있는지 확실하지 않습니다. –

+0

또 다른 참고 사항으로, 더 많은 문제점이 있습니다 :'size'와'read'는 예제에서 정의되어 있지 않습니다. –

+2

나는 마샬 (Marshal)이라고 약속 할 수 있습니다. 복사 작업이 가능합니다. –

답변

0

문제는 동일한 코드가 WCF 서비스와 일반 Windows 응용 프로그램에서 서로 다른 결과를 보였습니다. WCF 서비스에서 RemoteRead가 0 바이트를 읽을 때 0으로 설정하고 0 바이트를 읽은 후 Windows 응용 프로그램에서는 arrbyte가 그대로 유지되고 내부에는 적절한 값이 변경되지 않습니다.

관련 문제