Я развертываю приложение ASP.NET MVC3 в IIS7. Я уже развернул другие приложения, но они никогда не использовали папку App_Data или какие-либо дополнительные компоненты, такие как библиотека Interop.
Я использовал развертывание в один клик и подал в суд на пул приложений по умолчанию. Когда я запускаю приложение, я сразу получаю сообщение об ошибке:
[доступ в Интернет] К сожалению, при обработке вашего запроса произошла ошибка.
[просматривать из IIS7] Не удалось найти часть пути "D: \ Data \ Apps \ OppUpdate \ App_Data \ Test.xlsx".
Затем я вручную добавил папку App_Data в каталог развертывания, и приложение запускалось регулярно. Затем, когда дело касается таков, использующих библиотеку Interop, я получаю следующую ошибку:
[доступ в Интернет] К сожалению, при обработке вашего запроса произошла ошибка.
[просматривать из IIS7] Получение фабрики классов COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Есть ли способ автоматически добавить папку App_Data при использовании развертывания в 1 клик? Как я могу зарегистрировать службы Interop?
Спасибо вам,
Франческо
Очевидно, проблема связана с Server 2008. Приложение Excel, которое должно выполняться на стороне сервера, запускает всплывающее окно безопасности, которое теперь присутствует в ОС MS, например Win 7 и Vista. Это диалоговое окно, которое отображается пользователям каждый раз, когда они запускают приложение, и предупреждает их об ущербе, который ненадежное приложение может нанести их ПК. Очевидно, что когда приложение, в данном случае Excel, запускается другим приложением, в данном случае веб-приложением, диалоговое окно не появляется, и сервер не получает авторизацию для запуска Excel.
Решение этой ужасной ОШИБКИ в Microsoft IIS и Excel просто потрясающее:
Создать каталог «C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop». Установить права полного доступа для рабочего стола каталога (например, в Win7 и IIS 7 и DefaultAppPool установить разрешения для пользователя «IIS AppPool \ DefaultAppPool»)
источник: http://forums.iis.net/t/1148371.aspx
Вы не должны использовать взаимодействие COM Office в многопоточной среде, такой как веб-приложение.
Попробуйте использовать библиотеку, которая может читать и записывать файлы Excel. (для .xlsx)
http://epplus.codeplex.com/
Или Excellibrary (для .XLS) http://code.google.com/p/excellibrary/
Имейте в виду, что в ExcelLibrary (не epplus) есть ошибка, из-за которой листы с менее чем 50 ячейками не работают (ошибка буфера 4096 байт).
NPOI записывает файлы XLS без ошибок, но поскольку это java-порт, читать с ним файлы .xls менее комфортно (чтение ExcelLibrary без ошибок).
http://npoi.codeplex.com