Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
1

Работа с Word на ASP. Net Защита от сбоев

16.01.2016, 12:13. Просмотров 1616. Ответов 2
Метки нет (Все метки)


Все доброго времени суток! Разрабатываю веб-приложение, ввожу некоторые данные, и по ним формирую некоторые документ word из шаблона. Возникла следующая проблема, иногда работники, при формировании документа, не дожидаясь формирования документа, закрывают браузер к примеру.... и документ остается висеть в памяти... как быть и какие вообще варианты есть ? все спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2016, 12:13
Ответы с готовыми решениями:

Защита страниц ASP.NET не срабатывает
для того чтобы клиенты не могли обращаться напрямую к любой странице приложения не пройдя...

Безопасность сайта ASP.NET (защита от SQL - инъекций)
Alligieri, Интересно, а есть ли другой способ указания столбца? Ну скажем по его имени? Просто если...

Бинарный код, защита данных и вычислений от сбоев
Сбои в ОЗУ, сбои в процессоре, как реализована аппаратная обработка таких ошибок? В простейшем...

работа с Active Directory из ASP или ASP.NET
надо для себя, как администратора, сделать страничку, которая позволяла бы считывать состав группы...

2
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
18.01.2016, 09:11  [ТС] 2
Посоветуйте литературу хотя бы!
0
2427 / 1880 / 340
Регистрация: 22.07.2011
Сообщений: 7,197
19.01.2016, 05:53 3
Тут по-моему уже писали и не раз , через COM-м работать нельзя , используйте openxml и его обертки для формирования документа , который потом выгружаете в ответе на запрос , тогда никаких "документов в памяти" висеть не будет.

Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.
Проблемы серверной автоматизации Office

Разработчикам, пытающимся использовать Office в серверных решениях, следует помнить, что из-за особенностей программной среды Office может функционировать непредсказуемо в пяти основных случаях. Для успешной работы программ эти отклонения должны быть обязательно учтены, а их влияние минимизировано. При этом в процессе создания разнообразных приложений приоритет отклонений может меняться.
Идентификация пользователей. Приложения Office, даже в случае запуска в автоматическом режиме, предполагают наличие определенного пользователя. Так, например, инициализация панелей инструментов, меню, параметров, принтеров и некоторых надстроек выполняется на основе конфигурации запустившего приложение пользователя, которая хранится в соответствующем кусте реестра. Многие службы запускаются от имени учетных записей, не имеющих профиля пользователя (например, учетные записи SYSTEM или IWAM_[servername]), а следовательно, программа Office может не запуститься, выдав сообщение об ошибке для CreateObject или CoCreateInstance. Даже после запуска приложения некоторые функции, из-за отсутствия профиля пользователя, могут работать некорректно. При автоматизации Office с помощью службы, для его запуска с загруженным профилем пользователя необходимо соответствующим образом настроить Office или программный код.
Взаимодействие с рабочим столом. Приложения Office предполагают определенный уровень взаимодействия с пользователем и при выполнении некоторых автоматизированных функций требуют отображения на экране монитора. Office сконструирован таким образом, что всякий раз при возникновении ошибки или необходимости указания параметра выводится соответствующее модальное диалоговое окно. Модальное диалоговое окно на неинтерактивном рабочем столе не может быть отвергнуто, что приводит к остановке (зависанию) потока на неопределенное время. Даже если некоторые методы написания программ позволяют снизить возможность возникновения такой ситуации, полностью исключить ее нельзя. Уже только этот факт делает запуск приложений Office из серверного окружения рискованным и непредсказуемым.
Возможность повторного входа и масштабируемость. Серверные компоненты должны представлять собой многопоточные СОМ-компоненты с хорошо развитыми возможностями повторного входа, минимальными накладными расходами и высокой производительностью для нескольких клиентов. Приложения Office во многих отношениях обладают прямо противоположными характеристиками. Их возможности повторного входа не развиты, они представляют собой серверы на базе STA, сконструированные для предоставления разнообразных, но ресурсоемких функциональных возможностей одному клиенту. В качестве серверного решения они обладают незначительной масштабируемостью и жесткими ограничениями некоторых важных компонентов (например, памяти, которую нельзя поменять с помощью конфигурации). И, что более важно, они потребляют глобальные ресурсы (например, файлы отображения памяти, глобальные надстройки и шаблоны, а также общие серверы автоматизации), что ограничивает количество экземпляров, которые могут быть запущены одновременно, и, при настройке в среде с несколькими клиентами, приводит к конкуренции. Если планируется одновременный запуск нескольких экземпляров приложения Office, для предотвращения зависания программы и повреждения данных необходимо рассмотреть возможность объединения в пул или последовательного удовлетворения запросов на доступ к данному приложению.
Устойчивость и стабильность. Office 2000, Office XP и Office 2003 для упрощения процесса установки и самовосстановления используют установщик Windows (MSI). Установщик делает возможной «установку при первом использовании», когда компоненты динамически устанавливаются или настраиваются в процессе выполнения программы (может использоваться как для отдельного пользователя, так и для системы в целом). В серверном окружении это с одной стороны снижает производительность, а с другой — увеличивает вероятность того, что появится диалоговое окно с требованием одобрить установку или вставить необходимый диск. Таким образом, повышая устойчивость пакета Office как продукта для конечного пользователя, функции установщика Windows имеют обратный эффект в серверном окружении. Помимо всего прочего, стабильность Office при запуске с сервера не может быть гарантирована в принципе, потому что пакет не был создан и протестирован для такого рода использования. Использование Office в качестве компонента службы на сетевом сервере может снизить стабильность этой машины и, как следствие, сети в целом. При выполнении серверной автоматизации Office старайтесь ограничить использование программы рамками одного компьютера, который не выполняет критических функций и, в случае необходимости, может быть перезагружен.
Серверная безопасность. Приложения Office никогда не предназначались для серверного использования, и по этой причине в них не учтены проблемы безопасности, характерные для распределенных компонентов. Office не осуществляет проверку входящих запросов и не обеспечивает защиты от непреднамеренного запуска макроса или другого сервера, который, в свою очередь, может запустить макрос. Не открывайте файлы, загруженные на сервер с анонимного веб-узла! На основании последних выполненных настроек сервер может запустить макрос в контексте администратора или системы (а значит, со всеми полномочиями) и повредить сеть! Кроме того, Office использует многие клиентские компоненты (например, Simple MAPI, WinInet, MSDAIPP), которые для ускорения обработки данных кэшируют сведения о прохождении клиентами проверки. В случае серверной автоматизации Office один экземпляр программы может обслуживать несколько клиентов, сведения о прохождении проверки для определенного сеанса кэшируются, а следовательно, один клиент может воспользоваться кэшированными учетными данными другого и получить несанкционированный доступ, выдав себя за другого пользователя.
Помимо технической стороны, необходимо учитывать возможность воплощения такого дизайна с точки зрения лицензирования. Применяемые в данный момент времени условия лицензирования предусматривают использование приложений Office на сервере для обслуживания клиентов только в том случае, если клиенты также обладают лицензированными копиями Office. Применение серверной автоматизации для предоставления нелицензированным рабочим станциям доступа к приложениям Office не предусмотрено лицензионным соглашением.

В дополнение к описанным выше проблемам, при попытке выполнения серверной автоматизации без изменения настроек установленных программ из пакета Office, возможно появление следующих сообщений об ошибках.
CreateObject/CoCreateInstance возвращает в процессе выполнения одно из следующих сообщений об ошибке и не запускается для автоматизации.

В Microsoft Visual Basic (VB) и ASP
Сообщение 1
Ошибка выполнения '429': Компоненту ActiveX не удается создать объект
Сообщение 2
Ошибка выполнения '70': Отказ в разрешении
В Мicrosoft Visual C и Visual C++
Сообщение 1
CO_E_SERVER_EXEC_FAILURE (0x80080005): Ошибка при выполнении приложения-сервера
Сообщение 2
E_ACCESSDENIED (0x80070005): Отказано в доступе
Появление этих ошибок вызвано тем, что серверная программа запускается без профиля пользователя или учетные данные пользователя, указанные для запускающего окружения, не обладают необходимыми разрешениями DCOM.
Попытка открыть документ Office приводит к появлению одного из следующих сообщений об ошибке.
Сообщение 1
Ошибка выполнения '5981' (0x800A175D): Не удается открыть банк макросов
Сообщение 2
Ошибка выполнения '1004': Метод '~' объекта '~' завершен неверно
Как правило, появление таких сообщений свидетельствует о неудачной попытке инициализировать VBA из-за отсутствия достаточных разрешений или регистрации компонентов VBA. Это характерно для ситуаций, когда пользователь запускает программу с помощью учетной записи, у которой нет профиля пользователя (первая проблема), или маркер пользователя не содержит интерактивного кода SID (вторая проблема).

CreateObject/CoCreateInstance зависает, не завершается или отвечает слишком долго. На некоторых серверах создание происходит быстро, но в журнале событий Windows (NT) появляется запись об ошибке 1004.

Проблему часто вызывает диалоговое окно, которое является модальным для неинтерактивного рабочего стола, где запущен серверный программный код (вторая проблема). В случае незавершенной установки компонента (недостающая запись в системном реестре или поврежден образ файла), в диалоговом окне появляется требование вставить установочный компакт-диск для проведения повторной установки компонентов (четвертая проблема).
Некоторые функции не работают или зависают на неопределенное время.

На неинтерактивном рабочем столе (вторая проблема) могут быть недоступны или перейти в неопределенное состояние принтеры, подключенные сетевые диски, внедренные объекты OLE и буфер обмена. Аналогично при отсутствии профиля пользователя (первая проблема) недоступны сетевые ресурсы и предоставляются только минимальные разрешения.
Одновременное появление нескольких запросов или проведение тестирования в предельных режимах может привести к сбою (зависанию) программы или аварийному завершению при открытии или закрытии приложения Office. После этого в памяти остается процесс, который не может быть завершен, либо впредь все экземпляры автоматизированного приложения не функционируют.

Поскольку приложения Office используют глобальные ресурсы (третья проблема), запросы на доступ к выполнению над приложениями определенных действий (запуск, закрытие, печать, экспорт, обновление связей OLE, включая все уведомления DDE) должны удовлетворяться последовательно.
Помимо перечисленных выше, возможно возникновение других проблем и появление других сообщений об ошибках, но, как правило, в их основе находятся пять описанных выше причин общего характера. Для предотвращения возникновения ошибок такого рода разработчики должны сконфигурировать рабочую среду Office таким образом, чтобы сымитировать рабочую среду клиентского состояния, либо же удалить приложение Office из серверного кода, а вместо этого использовать компоненты, в большей степени подлежащие масштабированию (либо клиентскую автоматизацию).
Источник https://support.microsoft.com/ru-ru/kb/257757
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2016, 05:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Разница между ASP.NET Core 2, ASP.NET Core MVC, ASP.NET MVC 5 и ASP.NET WEBAPI 2
Здравствуйте. Я в бекенд разработке полный ноль. В чем разница между вышеперечисленными...

ASP.NET+C#: Создание таблиц с большим числом колонок в документах Word
Добрый день! Сразу к делу. Есть задача конвертирования на C# таблиц asp::GridView в документы...

Скачать ASP.NET MVC View в виде файла в формате Word Document
Есть статья Download an ASP.NET MVC View as a Word Document на сайте...

Чем отличается ASP.NET от ASP.NET MVC, и что лучше подходит для моего приложения
Дорогие знатоки, я прочитал Шилдта C# и WPF Мак-Дональда, но до сих пор я не сильно понимаю чем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.