Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 钴芯组件_C#_Sharepoint_Fsshttp_Ms Wopi - Fatal编程技术网

C# 钴芯组件

C# 钴芯组件,c#,sharepoint,fsshttp,ms-wopi,C#,Sharepoint,Fsshttp,Ms Wopi,我尝试在C#中实现一个自定义Wopi主机,它可以使用CobaltCore组件处理Cobalt协议 但是我没有找到任何关于CobaltCore.dll的文档 对象浏览器有点帮助 如果有人有类似问题,请提供一些详细信息。 我应该如何使用Cobalt来破译消息?对于word编辑实现,请点击此处: 编辑: 下面是一个使用CobaltCore的示例实现。在一个项目中,我在这个网站上对WOPI/FSSHTTP的回答几乎是结合在一起的 还实施了Cobalt编辑方法,就像Julia一样,即使在锁定存储回调(包

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

但是我没有找到任何关于CobaltCore.dll的文档 对象浏览器有点帮助

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

对于word编辑实现,请点击此处:

编辑:

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


还实施了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的查看模式,我怀疑会将我们锁定在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;
这一个锁定了word编辑功能,除非您更新文件的版本,否则即使您将其更改回false,它也将保持锁定状态

cfi.WebEditingDisabled = false;

罗杰·霍格(Roger Hogg)

感谢比特有限责任公司(BitLLC)以正确的方式取回文件

 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(); 

谢谢你的回答。但现在我需要更新本地存储数据并为OWA创建响应,以完成ExecuteCellStorageRequest操作。看起来更复杂。请您提供一个例子,或者告诉我我应该使用Cobalt API中的什么?如果您有存储设置,那么它就是CobaltFile.ExecuteRequestBatch(requestBatch);但是正确地获取存储要困难得多,SharePoint将文件存储在MSSQL服务器中。我不使用SharePoint-我有自己的文件存储。正如你所建议的,我使用了ExecuteRequestBatch。为此,我创建了CobaltFile,但构造函数还需要实例化DisposalEscrow、Dictionary、HostLockingStore和RequestProcessor[]。在结果中,我成功地生成了响应,但它不包含WebUrl和Url,必须根据文档为每个ResponseCollection元素和Request元素指定这些Url。我想这就是为什么OWA仍然向我显示此文档无法打开进行编辑的错误消息。我用回答您问题的代码更新了我的旧答案。谢谢你的例子,这真的很有帮助。我实现了类似的功能,目前我发现请求WOPI服务器ExecuteCellStorageRequest的结果-C:\tmp\filestore\包含一些切碎的blob。C:\tmp\wacstore为空。但我的OWA仍然对我说“对不起,无法打开此文档进行编辑”。在您的示例中,您编写了FileAtom.FromExisting(“C:\\tmp\\Test.docx”,temp),但没有定义temp,您将DisposalEscrow disposition=newdisposalescrow(“temp1”);它是什么意思-temp1?是WOPI服务器上的forder?根据DisposablesCrow Definition,它应该是所有者当我尝试时,它会给我提供给OWA的原始文件,而不会对OWA进行更改。这将从OWA:new GenericFda(This.CobaltEndpoint,null)获取更新更改的文件。GetContentStream()I目前,我可以使用OWA编辑/保存word文档,但尚未实现协同创作。感谢您的“thebitlic”。我仍然无法让我的服务进入编辑模式,我已经遵循了你的所有提示,但它总是说对不起。那么诀窍是什么呢?此代码修复了保存问题“该进程无法访问该文件,因为它正被另一个进程使用。”谢谢!
 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();