【问题标题】:Process Document from SharePoint 2013 Online App Host Site Externally从外部处理来自 SharePoint 2013 Online 应用程序主机站点的文档
【发布时间】:2013-12-05 22:54:38
【问题描述】:

我正在尝试创建一个 SharePoint 2013 Online 应用程序来处理存储在主机网站集上的文档。

我能够使用 jQuery ajax 从主机站点集合中检索文件,并且我收到的格式似乎是字节流(jQuery 似乎存储为字符串,或者至少,数据正在被我用来调试的浏览器解释为字符串)。

我的结论是我应该将接收到的文件发送到 WCF 应用程序,以便使用 C# 将流写入文件(在 WCF 服务的文件系统上),然后提取结果文件的内容。但是,生成的文件已损坏。我的假设是在过程中的某个地方(SharePoint 托管到 jQuery on App 或 App 到 WCF 应用程序)原始数据已损坏。

我的问题是:

  • 这是使用应用程序处理文档的最简单方法还是
    有没有更简单的方法来提取文档内容
    托管网站?
  • 假设我目前的方法是最好的方法,有什么方法可以防止我遇到的文件损坏?

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery sharepoint-2013 sharepoint-apps sharepoint-online


    【解决方案1】:

    好的,“这是最简单的方法吗”是一个非常主观的话题,现在应该避免,因为听起来你已经 90% 朝着你想要的方向前进了。

    您的文件损坏问题可能与 base64 编码问题一样简单,因为字节流已被编码为字符串。 (或者您的字节流不是您期望的文件)如果您发布用于解码流的代码和字符串本身,我们可以快速提供帮助。

    在这种情况下,如果出现损坏,我会使用 fiddler 来捕获原始响应,然后在 linqpad 或单元测试中对其进行解码。然后,您可以确定这是损坏还是文件错误。通过错误的文件,我的意思是您的字节流中可能有一个 html 错误页面,而不是您期望的文档。

    回到最简单的方法...听起来您想要在主机列表中使用工作流。如果您有许多站点要为此执行此操作,或者要处理大量文档,那么您可能希望创建 WCF 服务来处理此问题,这是您可能不希望的额外维护和管理开销,例如服务将在哪里托管。

    再次,非常主观,因为您的“处理”逻辑可能更容易用不同的框架或语言表达。 LightSwitch HTML 客户端应用程序也可能是一个有趣的地方,自动托管应用程序为您提供服务后端和托管应用程序的方法,因此您可以例如在客户端上使用 ajax 将文档发送到后端服务并执行您的逻辑在 C# 中。我实际上已经部署了一个非常类似这样的解决方案,部署到生产环境非常快。

    但是,如果您不需要 UI 或仅使用有限的 UI 来识别哪些文档以及何时处理它们,请研究列表接收器选项的工作流程

    【讨论】:

    • 事实证明,这只是 HTTP 请求中构造错误的标头。 Fiddler 确实帮助说明了这一点。谢谢你。我从来没有尝试过最后 10% 的工作流程,因为他们没有时间检查其他选项。
    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多