我在SharePoint 2010中有一个托管的Web服务,可以上传和下载到sharepoint。 因为文件可能很大(100MB +),所以我宁愿使用临时文件作为代码经过的流而不是内存流,以避免每次下载/上传时都有100mb内存分配。
问题是我可以在服务器中找到存储临时文件的位置。 System.IO.Path.GetTempFileName()抛出错误,因为经过身份验证的用户没有权限服务器中的%TEMP%文件夹。 “%systemroot%\ temp”允许写入文件但不删除它们。
我是否可以从sharepoint获取可供任何经过身份验证的用户存储文件的位置?
几点说明:
这些文件是临时文件,需要立即删除,因此无需考虑群集问题。
我不想要一个需要在服务器中执行任何主动操作的解决方案,因为这个插件可能部署在拥有大量服务器的服务器上,我不想让客户通过每个服务器。
感谢。
答案 0 :(得分:1)
您需要访问SharePoint的“系统帐户”下的文件。是的,System.IO.Path.GetTempFileName()是正确的位置。
起点 - SPSecurity.RunWithElevatedPrivileges。
注释
答案 1 :(得分:0)
它可能不是最好的地方,但我之前使用了hlay中的_layouts目录(C:\ Program Files \ Common Files \ Microsoft Shared \ Web Server Extensions \ 14 \ TEMPLATE \ LAYOUTS)来执行与此类似的操作之前。
您可以使用Microsoft.SharePoint.Utilities.SPUtility.GetGenericSetupPath()获取此位置,并且您应该能够在目录中读取/写入。您可能需要以提升的权限运行。