【发布时间】:2013-04-01 13:35:32
【问题描述】:
我有一个 Sitecore 6.4 设置,编辑者可以单击一个按钮来生成 Word 文档。我正在将文件添加到媒体库,并且工作正常。编辑器将单击内容编辑器中的按钮,生成文件,生成媒体项目,然后内容编辑器将在媒体库中显示新项目,编辑器可以单击功能区或项目上的“下载”按钮下载它。但是,我的媒体库被不必要地填满了,所以我试图绕过媒体库。
我没有像以前那样将文件放在任意位置,而是将它放在临时目录中,如下所示:
wordOutputPath = Sitecore.IO.FileUtil.GetWorkFilename(Sitecore.Configuration.Settings.TempFolderPath, printItem.Name, ".docx");
File.Copy(wordTemplatePath, wordOutputPath);
WordprocessingDocument doc = WordprocessingDocument.Open(wordOutputPath, true);
用内容“填充”文件后,我会这样做:
Sitecore.Context.ClientPage.ClientResponse.Download(wordFilePath);
现在,如果我以 Sitecore 管理员身份登录,我会看到浏览器的下载对话框并可以下载文件。但是,如果我以非管理员用户身份登录,我会得到一点点击和呼呼声,可以说,文件已生成,但浏览器中永远不会出现保存文件对话框。我可以通过文件系统进入并查看并打开 Word 文档,它看起来很好。
我在 6.6 的 Sitecore 发行说明中发现了一些内容:
已发布 Sitecore CMS 和 DMS 6.6.0 rev。 130111(6.6.0 Update-3)
[...]
杂项
Only Administrators were allowed to download files. (316774, 348557) This was a problem in several areas of the system, for example the Package Generator and the Export Language Wizard in the CMS. It also affected the Export Users Wizard in the ECM module.
所以我尝试像这样使用 SecurityDisabler(不再有方便的代码)和 UserSwitcher:
using (new Sitecore.Security.Accounts.UserSwitcher(Sitecore.Security.Accounts.User.FromName("sitecore\admin", false)))
{
Sitecore.Context.ClientPage.ClientResponse.Download(wordFilePath);
}
IUSR 和 IIS_IUSRS 帐户都对临时文件夹具有读取、列出和读取/执行权限,并且各个文件也显示这两个帐户的读取和读取/执行权限。
我可以做些什么来允许非管理员用户下载这些文件? 6.6修复的bug和这个有关系吗?
谢谢。
【问题讨论】:
-
非管理员用户点击它时会发生什么?是否显示或记录错误消息?另外,您是否检查过所涉及项目的 Sitecore 权限?
-
您最好按照安德鲁的建议检查权限。这不可能是工作进程用户(IUSR等)的权限问题,或者管理员用户无法更轻松地触摸它,所以这是一个死胡同。