Использование `InsertFile` и сохранение файла с сайта на IIS - PullRequest
3 голосов
/ 24 ноября 2011

Я пытаюсь добавить файл в текстовый документ

application.Selection.InsertFile(file);

Но это вызывает исключение

COMException: The document name or path is not valid

А затем сохранить его

document.SaveAs(path);

Но тогда я получаю исключение

The object invoked has disconnected from its clients. (Exception HRESULT: 0x80010108 (RPC_E_DISCONNECTED))

Точно такой же код работает, когда работает из Visual Studio . Исключение возникает только при попытке запустить из IIS .

Может ли это быть связано с каким-то разрешением? Я дал права полного доступа для Everyone, ISUSR, Network, Network Service, System, Administrators ... И я также пытался использовать Impersonate с учетной записью администратора.

Как это исправить, чтобы оно работало при запуске из IIS?


Вот класс, который я создал для работы с документом: http://pastebin.com/yB2s0jn4

А вот как я это называю

using (var doc = new HtmlWordDocument(outFile))
{
    // calls Selection.InsertFile( file )
    doc.WriteContent(tempFile);

    // calls document.SaveAs()
    doc.Save();
}

Ответы [ 2 ]

0 голосов
/ 24 июня 2015

вам нужна служба IISADMIN, но по умолчанию она не установлена, эта служба позволит подключать IIS к большему количеству ресурсов ОС

Проверить это ...

https://social.msdn.microsoft.com/Forums/en-US/28ddf643-0f9b-46e6-a8c5-a83f5a36c361/not-able-to-see-iis-admin-service-in-windows-server-2008-r2?forum=netfxbcl

и это ...

https://support.microsoft.com/en-us/kb/555134

0 голосов
/ 24 ноября 2011

Вы пробовали олицетворение ( Как реализовать олицетворение в приложении ASP.NET )? как показано ниже:

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = 
    ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

    using (var doc = new HtmlWordDocument(outFile))
    {
        // calls Selection.InsertFile( file )
        doc.WriteContent(tempFile);

        // calls document.SaveAs()
        doc.Save();
    }

impersonationContext.Undo();
...