編集者がボタンをクリックして Word ドキュメントを生成できる Sitecore 6.4 セットアップがあります。ファイルをメディア ライブラリに追加していましたが、問題なく動作していました。編集者がコンテンツ エディターのボタンをクリックすると、ファイルが生成され、メディア アイテムが生成されます。コンテンツ エディターはメディア ライブラリに新しいアイテムを表示し、編集者はリボンまたはアイテムの「ダウンロード」ボタンをクリックします。をクリックしてダウンロードします。ただし、メディア ライブラリが不必要にいっぱいになっていたため、メディア ライブラリをバイパスしようとしています。
以前のようにファイルを任意の場所に作成する代わりに、次のように一時ディレクトリに配置しています。
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 の両方のアカウントには、一時フォルダーに対する読み取り、一覧表示、および読み取り/実行のアクセス許可があり、個々のファイルには、これら 2 つのアカウントの読み取りと読み取り/実行のアクセス許可も表示されます。
管理者以外のユーザーがこれらのファイルをダウンロードできるようにするにはどうすればよいですか? 6.6 で修正されたバグと関係がありますか?
ありがとうございました。