내 사용자 지정 WCF 서비스에는 Sharepoint 사이트에서 파일을 다운로드하는 방법이 있습니다. 목표는 DownloadFile을 호출 한 다음 스트림을 수신하는 것입니다.Sharepoint에서 스트리밍되는 WCF
[OperationContract]
Stream DownloadFile(string uri);
셰어 포인트에서 파일을 가져 오는에 대한 코드와 스트림은 반환 :
public Stream DownloadFile(string uri)
{
// NOTE! we cannot use a using statement as the stream will get closed.
var site = new SPSite(uri);
var web = site.OpenWeb();
var file = web.GetFile(uri);
// some custom authentication code...
// NOTE! do not close stream as we are streaming it.
return file.OpenBinaryStream();
}
내가 스트리밍이 자동으로 제대로 닫혀와 WCF 서비스에 의해 배치 얻을 것이다 스트리밍됩니다 스트림을 추측 완전한?
그러나 사이트 (웹 및 사이트)가 적절하게 처리되지 않는 내 셰어 포인트 개체로 문제를 해결하려면 어떻게해야합니까? 이것이 장기적으로 문제가되는 것입니까? 다른 방법이 있습니까? SharePoint에서 파일을 다운로드 할 때 실행해야하는 사용자 지정 인증 코드가 있으므로 Sharepoint 클라이언트 개체 모델을 사용하고 싶지 않습니다.
올바른 방향으로 나를 가리킬 수있는 생각이나 아이디어가 있습니까?
UPDATE :
이 같은 현재 OperationContext에 OperationCompleted 이벤트를 사용하여이 문제를 해결할 수도:
OperationContext clientContext = OperationContext.Current;
clientContext.OperationCompleted += delegate
{
if(stream != null)
stream.Dispose();
site.Close();
web.Close();
};
어쩌면 내가 스트림을 처리 할 필요가 없습니다
? 위의 방법으로 문제가있는 사람이 있습니까?
귀하의 질문에 많은 도움이되었습니다. 정리를위한 대리인과 좋은 생각. 감사! – kenchilada