Закрытие процесса word на сервере с помощью VB.NET
У меня здесь есть несколько кодов, которые генерируют файл word. Он отлично работает на моем локальном хосте и на тестовом сервере. В winword.exe правильно закрывает и освобождает память. Однако, протестировав его на другом сервере, winword.exe все еще остаются в фоновом процессе, и память не освобождается даже после генерации.
Я следил за загрузкой процессора сервера, и она даже не высока и возвращается к 0% после генерации файла word, но winword.exe остается на заднем плане.
Я новичок в этом деле. Пожалуйста помочь. Спасибо!
Что я уже пробовал:
Public Sub Generate_Word(ByVal strResult As List (of String))
Dim strTemplateFile As String = " ~\TestFolder\TestFile.doc"
Dim WordApp Как Новое Слово.Приложение
Дим ньюдок как слово.Документ
newDoc = WordApp. Documents.Добавить (HttpContext. Current.Сервер.MapPath(strTemplateFile))
'***Сгенерируйте файл word здесь ***'
'***Сохраните файл здесь***'
ReleaseObject(ГСЧ)
ньюдок.Закрыть (Ложь)
ReleaseObject(newDoc)
WordApp.Приложения.Выход(Ложные)
ReleaseObject(WordApp)
'*********** Начало очистки кода *************'
СБОРЩИК МУСОРА.Собирать()
ГК.WaitForPendingFinalizers()
'ГК должен быть вызван дважды для того, чтобы получить финализаторы называется
- в первый раз он просто составляет список того, что должно быть.
- окончательно, во второй раз, он действительно завершается. Только
- тогда объект выполнит свое автоматическое освобождение.
СБОРЩИК МУСОРА.Собирать()
ГК.WaitForPendingFinalizers()
'*********** Конец кода очистки *************'
'***сохраните файл в базе данных здесь***'
Конец Подводной Лодки
Public Sub ReleaseObject(ByVal obj As Object)
Попробуй
Dim intRel как целое число = 0
Делать
intRel = System. Runtime.InteropServices.Маршал.FinalReleaseComObject(obj)
Цикл While intRel > 0
obj = ничего
Поймать ex как исключение
obj = ничего
Окончательно
Конец Попытки
Конец Подводной Лодки
Richard Deeming
Соображения по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.
Файлы DOCX[^] свободен и не страдает от тех же ограничений.
Aifos Lavigne
Привет, я собираюсь попробовать. Спасибо!