понедельник, 19 марта 2012 г.

Экспорт в excel/word возвращает пустой документ или снова проблемы с ReportViewer 2010 в SharePoint 2010

Исходные данные.
Исходные данные такие же как и в предыдущем сощбщении: SharePoint 2010 -> Visual Web Part -> UpdatePanel -> Microsoft Report Viewer 2010.

Ситуация.
MRV 2010 корректно генерирует рапорт на страничке в своей секции. НО когда мы тыцаем на "Export to Excel/Word" и пытаемя открыть сгенерированный документ, то     во-первых мы получаем следущее предупреждение  "The file you are trying to open '<FileName.xls>', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?". Во-вторых - если мы соглашаемся открыть документ - то получаем пустоту размером в 0 кб.

Исследование.
Если залогиниться как пользователь который имеет админские права на сервере и сэкспортировать документ в вышеуказанные форматы - то все хорошо. Никаких предупреждений. Да и документы не пустые. Но стоит только зайти как  обычный пользователь - "Хьюстон, у нас проблемы". Так что проблемы где-то в правах на сервере.
Посредством полезной утилитки Procees Monitor обнаружил что Network Service имеет ошибку записи при попытке записать екселевский файлик в некоторый каталог. Это был знак. 

Решение.
Вот этот каталог -  "C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp".  Для того чтоб решить эту проблему достаточно было добавить пользователя  "Authenticated Users" с правами   "Full Control " на эту директорию.

НО! Это не совсем правильный ответ.... Каталог описанный выше - это всего лишь частный случай... На самом деле нужно сделать следущее -  добавить пользователя  "Authenticated Users" с правами   "Full Control " на временную директорию аккаунта под которым выполняется Пул вашего веб-приложения. У меня Пул запускался как Network Service - так что вышеописанная директория мне подошла. Но если ваш пул запускается, например, под пользователем "Administrator.Office" - то возможно, вам понадобится эта директория: C:\Users\Administrator.OFFICE\AppData\Local\Temp. Да, и делайте все это на сервере, а не на локальной машине.



English version of this  post >>
WWW.LANTERIA.COM