gpt4 book ai didi

c# - 从 Sharepoint 流式传输 WCF

转载 作者:行者123 更新时间:2023-11-30 18:41:22 24 4
gpt4 key购买 nike

我的自定义 WCF 服务有一种从 Sharepoint 站点下载文件的方法。目标是调用 DownloadFile 然后接收流。

[OperationContract]
Stream DownloadFile( string uri );

从 Sharepoint 获取文件并返回 Stream 的代码是:

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 下载文件时执行。

有什么想法或想法可以指引我正确的方向吗?

更新:

我可能已经通过在当前 OperationContext 上使用 OperationCompleted 事件解决了这个问题,如下所示:

OperationContext clientContext = OperationContext.Current;
clientContext.OperationCompleted += delegate
{
if( stream != null )
stream.Dispose();
site.Close();
web.Close();
};

也许我不需要处理流?有没有人发现上述方法有问题?

最佳答案

只要您仍然有对 SPSite 和 SPWeb 的引用,上面的内容应该没问题,然后您就可以处理它们。

只是一小部分,最佳做法是在 SPSite 和 SPWeb 对象上调用 Dispose() 而不是 Close()。

关于c# - 从 Sharepoint 流式传输 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com