использование Microsoft.Office.Interop.Word в среде Sharepoint - PullRequest
0 голосов
/ 07 сентября 2018

Вы должны простить мое невежество в отношении этого кода. Я написал некоторый код для изменения приемника событий. Я настроил среду разработки для SharePoint и, наконец, получил ее для доступа и изменения определенных элементов кода.

Тем не менее, это следующая строка, где она терпит неудачу:

Word.Application wordApp = new Word.Application();

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

Полный код приведен ниже для полноты

using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
using Word = Microsoft.Office.Interop.Word;


namespace chrisclementen.chrisclementen
{

public class chrisclementen : SPItemEventReceiver
{
    /// <summary>
    /// An item was added.
    /// </summary>
    public override void ItemAdded(SPItemEventProperties properties)
    {
        base.ItemAdded(properties);
        commentscheck(properties);
    }


     private void commentscheck(SPItemEventProperties properties)
    {

        bool commentsorrevisions = false;

        SPListItem item = properties.ListItem;
        SPFile file = item.File;
        if (properties.AfterUrl.EndsWith("docx"))
            {

                commentsorrevisions = WordCommentsChecker(file, properties);

            }


     }
     private static bool WordCommentsChecker(SPFile file, SPItemEventProperties properties)
{

    bool outcome = false;

    Word.Application wordApp = new Word.Application();
    properties.ListItem["Title"] = "bextor";
    properties.ListItem.Update();
    Word.Document document = wordApp.Documents.Open(file);
    int commentscount = document.Comments.Count;
    int revisionscount = document.Revisions.Count;

    if (commentscount != 0 || revisionscount != 0)
    {
        Console.WriteLine("comments");
        document.ActiveWindow.Close();
        wordApp.Application.Quit(-1);
        outcome = true;

    }

    else
    {
        Console.WriteLine("No Comments.");
        document.ActiveWindow.Close();
        wordApp.Application.Quit(-1);
        outcome = false;
    }

    return outcome;
}
    /// <summary>
    /// An item was updated.
    /// </summary>
    public override void ItemUpdated(SPItemEventProperties properties)
    {
        commentscheck(properties);
    }
}
}

1 Ответ

0 голосов
/ 07 сентября 2018

Какие-либо советы о том, как я могу включить запуск приложения Word в среде SharePoint в качестве приемника событий?

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

С Рекомендации по автоматизации Office на стороне сервера :

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

Так вот и все. Вы должны искать другой способ читать или писать документы Word. Есть много библиотек, способных сделать это.

...