Используйте DCOM для преобразования docx в pdf, чтобы получить System.Runtime.InteropServices.COMException (0x8000401A) - PullRequest
0 голосов
/ 07 августа 2020

У меня есть консольная программа, которая использует DCOM для управления файлами docx в сети (т.е. \\ 192.168.1.4 \ data), а затем сохраняет их в том же сетевом месте, что и pdf. Он делает это в пакетном режиме, поэтому при каждом запуске он обрабатывает около 10 файлов в al oop.

Если я запускаю exe вручную, все работает нормально. Но затем я настраиваю планировщик задач, который запускает его каждые 30 минут. Учетная запись для запуска - это моя учетная запись. Он работает нормально в течение нескольких часов, а затем внезапно получает это исключение для каждого преобразования.

System.Runtime.InteropServices.COMException (0x8000401A): Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 8000401a The server process could not be started because the configured identity is incorrect. Check the username and password. (Exception from HRESULT: 0x8000401A).
at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)

Конфигурация DCOM для WORD установлена ​​как интерактивный пользователь. Я также установил его как свою учетную запись, получите это исключение:

System.Runtime.InteropServices.COMException (0x800A1420): This is not a valid file name.
Try one or more of the following:
* Check the path to make sure it was typed correctly.
* Select a file from the list of files and folders.
   at Microsoft.Office.Interop.Word.InlineShapes.AddPicture(String FileName, Object& LinkToFile, Object& SaveWithDocument, Object& Range)

В коде он использует AddPicture для добавления изображения из сети в docx. И сетевой путь действителен, не знаю, почему это исключение, но я предполагаю, что это из-за конфигурации DCOM.

Если установить конфигурацию DCOM для WORD в качестве запускающего пользователя, это будет первое исключение (см. Выше) из начало преобразование так и не удалось.

Код похож на:

var wordApp = new Word.Application();
var adoc = new Word.Document();
try
{
    wordApp.Visible = false;
    adoc = wordApp.Documents.Open(ref fileNameDocx,
        ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing);

    adoc.Activate();    // ***
    ......
}
finally
{
    _log.Info("Releasing Object ...");
    ReleaseObject(adoc);
    ReleaseObject(wordApp);
    _log.Info("Releasing Object: Done.");
}                   

Исключение происходит в строке ado c .Activate ();

Кто-нибудь знает, как решить эту проблему?

Спасибо

  • У меня все еще проблема. Однако я заметил, что, когда это произошло, если программа остановится на некоторое время, скажем, на 1 час, а затем попробуйте тот же файл снова, он снова заработает. На данный момент это решило проблему, но все еще интересно узнать, почему / как это исправить.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...