2

我尝试在 C# 中实现一个自定义 Wopi 主机,它可以使用 CobaltCore 程序集处理 Cobalt 协议。

但是我没有发现 CobaltCore.dll 对象浏览器的任何文档有点帮助..

如果有人遇到类似问题,请提供一些详细信息。我应该如何使用 Cobalt 来破译消息?

4

3 回答 3

1

对于文字编辑实现,请访问此处:

我可以只使用 Office Web Apps Server

// fsshttpb payload, basically decode from base64 encoded

byte[] test1 = System.Convert.FromBase64String("DAALAJzPKfM5lAabBgIAAO4CAABaBBYADW1zd29yZAd3YWN6AggA1RyhD3cBFgIGAAMFABoEIAAL3Do4buY4RJXm4575cgEiigICAAALAawCAFUDAQ==");

// create an atom object from the fsshttp input
AtomFromByteArray atomRequest = new AtomFromByteArray(test1);

RequestBatch requestBatch = new RequestBatch();
requestBatch.DeserializeInputFromProtocol(atomRequest);

// now you can inspect requestBatch to view the decoded objects

编辑:

这是使用 CobaltCore 的示例实现。我在这个网站上对 WOPI/FSSHTTP 的回答几乎是一个项目的组合。

https://github.com/thebitllc/WopiBasicEditor

于 2014-05-31T16:58:46.520 回答
1

还实现了 Cobalt 编辑方法,就像 Julia 一样,即使在锁定存储回调(包括共同作者等)之后,它也会停止在“无法编辑屏幕”。然而,我发现 OWA 的日志系统揭示了关于 OWA 服务器的相当多的细节是什么试图做。C:\ProgramData\Microsoft\OfficeWebApps\Data\Logs\ULS 我可以从这些日志中看到它抱怨缺少访问令牌,方法是提供

    &access_token=1&access_token_ttl=0 

到 wopi url 的末尾,这个错误就消失了。

我还测试了许多文件信息字段,并且能够看到 OWA 服务器如何缓存信息。如果我们不断改变 cfi.Version

FileInfo info = new FileInfo("C:\\WOPI OWA WORD EDITOR\\OWA_Source_Documents\\" + fi.Name);
cfi.Version = info.LastWriteTimeUtc.ToString("s");

每次通过普通单词更改文件内容时,我们都会得到一个新的缓存项。

这些也会影响 Word 的查看模式,我怀疑会将我们锁定在 word 编辑模式之外,但由于我没有那个工作,我还不能说。

 cfi.SupportsCoauth = true; // all three (3) needed to see the edit in browser menu in view mode .
 cfi.SupportsCobalt = true; // all three (3) needed to see the edit in browser menu in view mode .
 cfi.SupportsFolders = true; // all three (3) needed to see the edit in browser menu in view mode .
 cfi.SupportsLocks = true;
 cfi.SupportsScenarioLinks = false;
 cfi.SupportsSecureStore = true;
 cfi.SupportsUpdate = true;

这会锁定单词编辑功能,除非您更新文件的版本,否则即使您将其更改回 false,它也会保持锁定状态。

cfi.WebEditingDisabled = false;

罗杰·霍格

于 2014-06-19T00:02:23.423 回答
1

感谢 thebitllc 提供了正确的方法来取回文件。

 System.IO.FileStream _FileStream = new System.IO.FileStream("C:\\WOPI OWA WORD EDITOR\\OWA_Updated_Documents\\output.docx", System.IO.FileMode.Create, System.IO.FileAccess.Write);
GenericFdaStream myCobaltStream =  new GenericFda(cobaltFile.CobaltEndpoint, null).GetContentStream();
myCobaltStream.CopyTo(_FileStream);
_FileStream.Close(); 
于 2014-06-19T01:53:31.117 回答