问题标签 [ms-wopi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1109 浏览

c# - 文件被锁定编辑后应该在WOPI服务器端解锁文件时

基于 WOPI 协议以及通过 Internet 发布的帖子,包括CobaltCore 程序集后的 stackoverflow ,我们能够在 Office Web App 服务器上对 ppt/excel/word 进行编辑。我们试图更多地了解的一件事是关于锁定/解锁。我对 excel 文件进行了一些测试以了解锁定和解锁。如果我们能在 excel 中理解这一点,我们将转向 word 文件。以下是我的发现:

  1. 当我开始在浏览器中编辑 excel 文件时,OWA 服务器会将 Lock WOPI Http 请求(x-wopi-override 标头作为 LOCK)调用到 WOPI 服务器
  2. 2分钟后,OWA服务器将通过调用PutFile(x-wopi-override:PUT)将我编辑的内容自动保存到WOPI服务器
  3. 当我关闭浏览器选项卡时,会有从 OWA 服务器到 WOPI 服务器的 Unlock Http 请求调用( x-wopi-override: UNLOCK )

但是在上述第 2 步之后,如果我只是让浏览器闲置超过 1 小时,实际上 OWA 服务器会每 15 分钟调用一次 RefreshLock ( x-wopi-override: REFRESH_LOCK ) 来刷新同一个锁,尽管默认情况下锁应该过期每个 WOPI 协议文档 30 分钟后。这样,它将继续锁定文件,并且WOPI服务器没有机会释放锁定。

我只是想知道当用户在客户端空闲的情况下,我们什么时候可以释放 WOPI 服务器端的锁。我们无法将文件锁定几个小时(我还不知道这里的限制,尽管在很长一段时间后在 OWA 查看 SharePoint 文件时我们可能会收到会话过期等消息),这将阻止其他用户编辑文件. 我们将 SupportsCoauth 设为假。

只是想知道是否有人可以在这里阐明锁定和解锁行为以及我们如何防止 OWA 继续锁定文件。

注意:我找不到更好的标签,并且 SO 没有 WOPI 标签,所以我添加了相同的标签作为发布CobaltCore 程序集

更新(9 月 16 日):如果在 OWA 服务器上进行编辑,它可能不会阻止其他用户编辑文件,因为 OWA 服务器可能会释放第一个用户的锁定和第二个用户的锁定。我们还没有确认。但是,如果另一个用户需要将相同的文档从桌面上传到我们的服务器,并且它需要锁定来覆盖文件,则不确定锁定将如何工作。

0 投票
2 回答
3544 浏览

c# - Azure 存储托管文档的 Microsoft Office Web 查看器

我的应用程序托管在 Microsoft Azure 上的 VM 中,并处理 MS-Office 文档(.doc、.docx、.xls、.xlsx、.ppt、.pptx)。用户需要查看存储在 Azure 存储服务上的这些文档。

我正在寻找与我的应用程序集成的查看器。在显示这些文件之前,我的应用程序会进行一些验证,以检查用户是否可以查看、打印或下载文件。在某些情况下,当用户请求查看 OpenXML 文档 (.docx) 时,我的应用程序会先修改文件,然后再将其显示给用户。

我的第一个选择是使用 Microsoft 的免费查看器(http://products.office.com/en-us/office-online/view-office-documents-online),通过 iframe 将其集成到我的应用程序中,但我不能限制用户对文件的访问 - 没有禁用打印或下载的参数。

我的第二个选择是将这些文档转换为 PDF 并使用 PDF 查看器,但是将这些文档转换为 PDF 需要专有解决方案(如Aspose),并且 Excel 文件在转换为 PDF 时外观不佳。

消除上述选项后,我正在考虑使用带有 Office Web 部件和 Sharepoint 的新 VM 来执行此操作。Office Web Apps 是一个不错的选择吗?我可以改用 Office 365 吗?我是否可以与我的应用程序集成、限制用户对文档的操作以及查看 OneDrive 或 Sharepoint 数据库中的文件?

请让我知道您是否有其他解决方案。谢谢你。

0 投票
1 回答
1452 浏览

asp.net-web-api - 如何使 Office Web App Server 能够使用 Cobalt 编辑文档

我正在尝试根据此示例使用 ASP.NET MVC 及其 WebAPI 函数构建我自己的 WOPI 主机

https://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6

我成功地使用该示例连接到我的 Office Web App Server,我可以使用它来访问本地路径中的 Excel 和 PowerPoint 文件,并且我可以编辑它,但我不能使用它在编辑模式下打开 Word 文档,因为后操作处理程序在没有任何响应的情况下没有完全实现,因此它无法处理任何编辑请求。

为了增加对 Office 文档编辑的支持,我尝试使用基于从 Office Web App Server 中提取的 Cobalt 库的 POST 请求处理程序的示例。

https://github.com/marx-yu/WopiHost

通过这个示例,我设法使用 Office Web App Server 编辑和保存各种文档。但是,当我尝试将这两者集成在一起时,我发现即使我可以进入 Excel 和 PowerPoint 的编辑窗口,我也可以看到来自 Office Web App Server 的 Post 请求(如锁定和 Cobalt)由我的 WOPI Post API 操作处理程序处理. 这些更改根本不会对我的本地文件产生任何影响。此外,我仍然无法编辑word文档,当我检查Office Web App Server的积压时,我发现错误消息是不支持Cobalt,而我已经将CheckFileInfo响应中的SupportsCobalt设置为true!非常感谢任何帮助!

0 投票
1 回答
394 浏览

appserver - web app server 如何在 web config 中启动 appwopiserver

我已经安装了 Web 应用程序服务器,现在服务器是 IIS 上的 192.168.1.103,我有来自此站点的示例代码https://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6/view /讨论#内容

在此示例中,Web 配置中的 appwopiserver 为:“wopihost.wingtip.com:8888/api/wopi/files/”

如何在我的服务器中创建 api/wopi/files/ 目录?换句话说,我想更改此代码以连接到我的服务器。这是获取链接的代码:

在此示例中,最终创建的在浏览器中打开 office 的链接是:

http://owa1.wingtip.com/we/wordeditorframe.aspx?WOPISrc=http%3a%2f%2fwopihost.wingtip.com%3a8888%2fapi%2fwopi%2ffiles%2ftest.docx&access_token=YMDZjBxXlD4%3dlxnjDAq1aib0yGsNDo%2fd0Jm4b5R8Q3eJircFrcaU84f

但我想要这样的东西:(http://192.168.1.103/we/wordeditorframe.aspx?WOPISrc=http%3a%2f%2fwopihost.wingtip.com%3a8888%2fapi%2fwopi%2ffiles%2ftest.docx&access_token=YMDZjBxXlD4% 3dlxnjDAq1aib0yGsNDo%2fd0Jm4b5R8eJircFrcaU84fgQ%3d)

0 投票
2 回答
395 浏览

webapp2 - 我们应该在服务器上发布 wopi 主机 Web 应用程序吗?

我有一个 wopi 主机的示例代码,我已经在我的服务器 (192.168.1.103) 上安装了 Web 应用程序服务器,并且一个名为 HTTP80 的站点出现在 IIS 管理器的站点根目录下。我想知道是否必须将 wopi 主机发布到服务器中的 IIS 中。我已经从这个站点下载了 wopi 主机示例代码。

如何使用此代码在浏览器中打开我的文档?

0 投票
1 回答
211 浏览

c# - FileStream 和 WebClient 的区别

因此,我实际上是在尝试为 Web 项目设置 Wopi Host。

我一直在使用这个示例(Shawn Cicoria 的那个,如果有人知道的话),他提供了一个完整的代码示例,告诉您如何构建链接以使用带有一些文件的 Office Web App 服务器。

我的问题是,他的样本正在处理 OWA 服务器上的文件,我需要它来处理在线文件(比如http://myserv/res/test.docx。所以当他读取文件内容时,他正在使用这个:

但这不适用于“http”文件,所以我用这个改变了它:

正在编译。使用这个示例,我设法在我的 office web 应用程序中打开了 excel 文件,但没有打开 word 和 powerpoint 文件。所以,这是我的问题。

这两种方法之间是否有区别,尽管 WebClient 允许“在线阅读”,但它可能会改变我正在阅读的文件的内容?

对不起,不清楚的帖子,解释这样的问题并不容易x)我尽力了。

谢谢四爷的帮助!

0 投票
1 回答
1434 浏览

c# - FileStream 或 WebClient

我目前正在使用MicrosoftWopi的技术和Office Web App技术生成一些预览,但我遇到了问题。对不起我的英语不好,但我会尽量表达自己。

所以 !我通过下载文件的内容并将其存储到HttpContent. 首先,我在~/App_Data/我的项目中的文件上尝试了这个。我在课堂上阅读了它的内容,FileStream并将其转化为使用HttpContentthis : StreamContent(myFileStream)。所以,这工作得很好!

但是,我需要我的项目来处理存储在只能从 Internet 访问的服务器上的文件(因此物理 url 应该如下所示:http://myServer/res/file.pdf例如)。我不能在FileStream这里使用这个类,所以我这样做了:

问题是这个小示例似乎正在工作,但之后没有生成预览,这是我更改的唯一一段代码。我在发布之前检查了一些东西,所以:我确实可以访问该文件并且我可以阅读它。

所以,我的问题是,这是获取文件内容的好方法,它是否已过时,我应该怎么做才能尝试修补它?

我希望我的帖子足够清楚,感谢阅读!

0 投票
2 回答
1421 浏览

google-docs - Google 文档的 WOPI 等效项

MS WOPI 协议允许我们在 MS Office 在线环境中查看和编辑存储在我的服务器上的文档。

我正在尝试找出类似的界面是否也可以在 google docs 平台上使用。我们真正在寻找的是允许我们的 Web 应用程序的用户在我们网站内的某些文档上进行协作。我想将这些文档存储在我们的服务器上,而不使用 Google 驱动器作为存储机制。

我已经探索了我认为与谷歌驱动器完全相关的Apps Script API 。

0 投票
1 回答
1320 浏览

ms-word - 没有 MS-FSSHTTP/COBALT 的 WOPI 实现

我们正在尝试在不针对我们的 Office Web Apps 服务器使用 CobaltCore dll 的情况下实现 WOPI 主机。(用Java实现)。我发现的所有信息都表明您必须实施 MS-FSSHTTP 才能编辑 Word 文档。

但是,这是我在此页面上找到的:与 Office Online 集成

与 Office Online 集成相对简单。您只需要做一些 HTML 和 JavaScript 工作,并设置一些简单的 REST 端点。如果您熟悉现有的 Office 协议,请注意您不必实施 [MS-FSSHTTP]:通过 HTTP 协议上的 SOAP 进行文件同步 (Cobalt)

这里还有一个示例实现

但是当我点击我们的 Office Web Apps Server 时,我无法让它工作(标题 X-WOPI-Override 等于 Word 文档的 COBALT)。

  1. 该页面上的信息是否仅适用于您使用 Office Online 的情况?
  2. 是否必须更改 Office Web Apps Server 上的设置,以便其行为类似于 Excel 文件编辑?在 CheckFileInfo 上,我尝试设置 SupportsCoauth=false 和 SupportsCobalt=false
0 投票
0 回答
667 浏览

ms-office - Office Web Apps Server 2013 - 缓存问题

请考虑这种情况:

  • 我打开文件 A.pptx 并在查看模式下查看
  • 单击“在浏览器中编辑”按钮,文件以编辑模式正确打开。
  • 然后,以查看模式打开文件 B.pptx。
  • 单击“在浏览器中编辑”按钮,OWA 在编辑模式下打开文件 A.pptx 内容,但使用文件 B.pptx 属性。

我认为这与缓存有关,但我无法解决。

任何帮助将不胜感激。谢谢。

更新 20151222:

我能够使用 Excel Web App 重现此行为并获得相同的结果。

根据一些事件查看器日志条目,这似乎与“SessionID”有关:

事件查看器 - 1

这是我用来生成这些 ID 的代码片段:

代码片段

感谢任何帮助。