2012-07-07 4 views
1

내 클라이언트는 다른 클라이언트에서 스트림을 가져 오지만 클라이언트는 해당 스트림 중간에서만 읽을 필요가 있습니다.WCF 스트림 변경 위치

WCF에서 다른 클라이언트가 해당 스트림을 클라이언트에 제공하기 전에 FileStream으로 시작시 스트림을 생성 한 경우에도 내가 얻은 스트림은 FileStream으로 변환 될 수 없습니다. 제 의뢰인이 그렇게하지 못할 이유

그게 전부는 :

Stream1.Read(Buffer, Middle_Of_Stream, Buffer.Length) 

모든 솔루션을 이해할 수있을 것이다!

* 스트리밍 모드 = 스트리밍.

답변

1

클라이언트에서 수신 한 스트림은 전송에 사용 된 네트워크 스트림에 바인딩되어있을 가능성이 있으므로 파일 스트림으로 변환 할 수 없습니다. 서버의 FileStream은 클라이언트가 액세스하는 여러 가지 이유로 인해 보안되지 않을 수 없으므로 WCF는 파일 스트림에서 읽은 바이트를 네트워크 스트림에 복사합니다. 클라이언트에서는 읽기 전용 (및 검색 불가능) 스트림을 얻습니다.

클라이언트 측에서 파일 스트림으로 변환하려는 경우 새 파일 (임시 디렉토리에있을 수도 있음)을 만든 다음 프록시 호출시 얻은 스트림을 저장할 수 있습니다.

+0

모든 스트림을 읽고 파일 스트림으로 가볍게 쳐서 필요한 부분을 읽으십시오. agian은 좋은 해결책이 아닙니다. 시작/중간/끝에서만 ** ** 몇 바이트 만 읽는 방법을 찾아야합니다. 어떤 다른 옵션이 있습니까? –

+1

일부 바이트 만 읽으려면 작업을 변경하여 전체 파일이 아닌 관심있는 파일 부분에서 스트림을 반환하십시오. 귀하의 작업은 지금 필요한 것 이외에 오프셋 및 카운트 매개 변수를 취해야합니다. – carlosfigueira

+0

감사합니다. –