Обрабатывать документ с веб-узла приложения SharePoint 2013 извне

Я пытаюсь создать онлайн-приложение SharePoint 2013, которое будет обрабатывать документы, хранящиеся в семействе хост-сайтов.

Я могу использовать jQuery ajax для извлечения файла из коллекции хост-сайтов, и формат, в котором я его получаю, выглядит как поток байтов (который jQuery, по-видимому, хранит в виде строки или, по крайней мере, данные интерпретируются как строка браузером, который я использую для отладки).

Мой вывод состоит в том, что я должен отправить полученный файл в приложение WCF, чтобы использовать C # для записи потока в файл (в файловой системе службы WCF), а затем извлечь содержимое полученного файла. Однако полученный файл поврежден. Я предполагаю, что где-то в процессе (от хоста SharePoint к jQuery в приложении или от приложения к приложению WCF) исходные данные повреждены.

Мои вопросы:

  • Является ли это самым простым методом обработки документов с помощью приложения или
    существует более простой метод извлечения содержимого документов на
    хост-сайтах?
  • Предполагая, что мой текущий подход является лучшим подходом, есть ли способ предотвратить повреждение файла, с которым я сталкиваюсь?

Будем очень благодарны любой помощи.


person FourOFour    schedule 21.11.2013    source источник


Ответы (1)


Хорошо, «это самый простой метод» — очень субъективная тема, которой следует избегать прямо сейчас, потому что это звучит так, как будто вы на 90% находитесь там, где хотите быть.

Ваша проблема с поврежденным файлом, вероятно, так же проста, как проблема с кодировкой base64, поскольку поток байтов был закодирован в строку. (или ваш поток байтов не тот файл, который вы ожидаете) Если вы опубликуете код, который вы используете для декодирования потока с самой строкой, мы можем быстро помочь.

В таких случаях, когда это выглядит как повреждение, я использую fiddler для захвата необработанного ответа, а затем декодирую его в linqpad или модульном тесте. Тогда вы можете быть уверены, что это повреждение или у вас неправильный файл. Под неправильным файлом я подразумеваю, что у вас может быть страница ошибки html в вашем потоке байтов, а не тот документ, который вы ожидаете.

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

Опять же, очень субъективно, потому что вашу логику «обработки» может быть легче выразить в разных средах или языках. Приложения HTML-клиента LightSwitch также могут быть интересным местом для этого, приложения с автоматическим размещением предоставляют вам серверную часть службы и метод размещения приложений, поэтому вы можете, например, использовать ajax на клиенте для отправки документа в серверную службу и выполнения вашей логики. в С#. На самом деле я развернул решение, очень похожее на это, и его очень быстро развернули в рабочей среде.

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

person Chris Schaller    schedule 21.11.2013
comment
Оказывается, это был просто плохо составленный заголовок HTTP-запроса. Fiddler действительно помог прояснить это. Спасибо. Мне так и не удалось попробовать рабочий процесс из-за того, что последние 10% были завершены, и у них не было времени проверять другие варианты. - person FourOFour; 17.04.2015