Aifos Lavigne Ответов: 2

Process.kill () не работает на сервере


Привет, я хотел бы спросить, есть ли какие-либо другие методы, чтобы убить процесс с помощью vb.net?
Я попробовал этот процесс.Метод Kill (), и он отлично работает в моем локальном, но после тестирования его на сервере он не работает, и процессы остаются в фоновом режиме.
У вас есть какие-нибудь предложения?

Что я уже пробовал:

Public Sub CreateNew_Word(ByVal strResult As List(Of String))

'Added Code
'Description:Get all running winword processes then stored it in the list
        Dim processIds As New List(Of Integer)()
       For Each process__1 As Process In Process.GetProcessesByName("winword")
            processIds.Add(process__1.Id)
        Next

'***WORD FILE GENERATION HERE****

'Remove clean-up code to test the killing of process
'ReleaseObject(rng)
'newDoc.Close(False)
'ReleaseObject(newDoc)

'WordApp.Application.Quit(False)
'ReleaseObject(WordApp)

'GC.Collect()
'GC.WaitForPendingFinalizers()
'GC.Collect()
'GC.WaitForPendingFinalizers()

'Description: As the existing processes has been stored in the list. Those processes will not be killed. Only the generated winword.exe will be killed because it is not inside the list.
        For Each process__1 As Process In Process.GetProcessesByName("winword")
            If Not process__1.HasExited AndAlso Not processIds.Contains(process__1.Id) Then
                process__1.Kill()
            End If
        Next

Suvendu Shekhar Giri

Вы убиваете процесс с помощью ASP.Net?
Какова цель?

Aifos Lavigne

В winword.exe остается в фоновых процессах после создания файла word. Я попробовал несколько кодов очистки, которые отлично работают на моем локальном компьютере, но не на сервере. Поэтому я пришел, чтобы убить процесс вместо того, чтобы иметь возможность завершить его фоновые процессы. Но все равно не работает. Учетная запись службы, использующая учетную запись администратора, но все же я не могу понять, в чем проблема.

Richard Deeming

Репост
Вы уже опубликовали этот вопрос на прошлой неделе.
https://www.codeproject.com/Questions/1189039/Closing-of-word-process-in-the-server-using-VB-NET[^]

Ответ не изменился - автоматизация офиса от ASP.NET не поддерживается. Воспользуйся SDK OpenXML[^] или Файлы DOCX[^] для создания или изменения документов Word.

2 Ответов

Рейтинг:
1

F-ES Sitecore

Когда вы запускаете код на своей локальной машине, он, вероятно, работает под вашей собственной учетной записью, поэтому у него есть права на уничтожение процессов. На сервере он работает под учетной записью, которая не имеет этих разрешений. Также Word не поддерживается для asp.net автоматизация-вот почему вы видите проблемы, с которыми вы сталкиваетесь, когда процессы висят вокруг, вызывая проблемы.

Вам уже сказали, что это не сработает (теперь вы выясняете, почему) и использовать какой-то другой метод управления документами Word.


Рейтинг:
0

Dave Kreskowiak

Если это ASP.NET или приложение-служба Windows, которое вы не можете использовать Word. Ни одно из офисных приложений не поддерживается в непользовательской интерактивной среде.


Richard Deeming

Я возражал против одного из отрицательных голосов, но, похоже, есть по крайней мере два человека, которые никогда не читали KB257757!

Соображения по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.

Dave Kreskowiak

Вдобавок ко всему он сказал, что собирается попробовать DocX и, по-видимому, никогда этого не делал, потому что...причины.