0

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

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

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

我的问题是:

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

任何帮助将不胜感激。

4

1 回答 1

1

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

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

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

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

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

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

于 2013-11-21T19:43:49.833 回答