WOPI项目的创建
首先用vs2012创建一个mvc4的程序。如图:

从上一篇我们可以知道,WOPI通讯主要通过两个服务:
一个是CheckFileInfo服务,
一个是GetFile服务。
所以下面我们主要介绍这两个服务的创建。
1. 首先创建CheckFileInfo服务:
我们先确定这个服务的路由地址
设置为:http://<ServerName>/files/<filename>?access_token=<token>
修改App_Start文件夹下面的WebApiConfig.cs文件。
插入下列代码:
config.Routes.MapHttpRoute(
name: "FileInfo",
routeTemplate: "wopi/files/{name}",
defaults: new { controller = "files", action = "GetFileInfo" }
);
如图所示

创建一个名称为files的Controller,

设置为空API控制器:

之所以我们不用平常的MVC控制器,而选API控制器,是因为我们做的是服务,来返回信息,所以要换成ApiController。
这个服务要返回的是json,属性包括为
BaseFileName
OwerId
Size
SHA256
Version
所以我们要创建一个model,包含上述属性
如下图:

在上述的路由器规则中,action用的是GetFileInfo方法,所以要在FileController规则中写一个GetFileInfo方法,这个方法返回CheckFileInfo类型。
public CheckFileInfo GetFileInfo(string name, string access_token)
{
string _access_token = access_token;
var file = HostingEnvironment.MapPath("~/App_Data/" + name);//从硬盘中获取name文件
FileInfo info = new FileInfo(file);
var json = new CheckFileInfo
{
BaseFileName = info.Name ,//"test.docx",
OwnerId = "admin",
Size = info.Length,
SHA256 = "+17lwXXN0TMwtVJVs4Ll+gDHEIO06l+hXK6zWTUiYms=",
Version = "GIYDCMRNGEYC2MJREAZDCORQGA5DKNZOGIZTQMBQGAVTAMB2GAYA===="
};
return json;
}
如下图

我们访问一下这个地址:
http://192.9.206.52:1407/wopi/files/test.docx?access_token=06l+hXK6zWTUi
这个192.9.206.52是我的本机地址。
得到下列结果:

证明这个服务制作成功。
2.然后再来制作GetFile服务。
因为GetFileInfo的URI地址
http://<ServerName>/files/<filename>?access_token=<token>
所以GetFile地址应该比其多一个/Contents,所以为
http://<ServerName>/files/<filename>/Contents?access_token=<token>
设置它的路由地址
config.Routes.MapHttpRoute(
name: "Contents",
routeTemplate: "wopi/files/{name}/contents",
defaults: new { controller = "files", action = "GetFile" }
);
如下图:

GetFile这个服务返回的应该是数据流,所以返回的类型应该是HttpResponseMessage类型。
从硬盘中获取一个doc文件,转换为Stream类型,代码如下:
public HttpResponseMessage GetFile(string name, string access_token)
{
try
{
string _access_token = access_token;
var file = HostingEnvironment.MapPath("~/App_Data/" + name);//name是文件名
var rv = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(file, FileMode.Open, FileAccess.Read);
rv.Content = new StreamContent(stream);
rv.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return rv;
}
catch (Exception ex)
{
var rv = new HttpResponseMessage(HttpStatusCode.InternalServerError);
var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(ex.Message ?? ""));
rv.Content = new StreamContent(stream);
return rv;
}
}
如下图:

至此,两个服务制作完毕。
可以访问下列地址查看效果,
http://192.9.206.50/wv/wordviewerframe.aspx?WOPISrc=http%3a%2f%2f192.9.206.52%3a1407%2fwopi%2ffiles%2ftest.docx&access_token=06l+hXK6zWTUi
其中
192.9.206.50为OWA的机器地址,
192.9.206.52为本机的地址。
这个URL地址带了两个参数
分别为WOPISrc,值为http://192.9.206.52:1407/wopi/files/test.docx
Access_token,值为06l+hXK6zWTUi
这两个参数的意思,我已经在以前的博文中《如何整合Office Web Apps至自己开发的系统(一)》说过了。
在这个例子中,access_token我是随便取的,并且在代码中也没有对这个令牌进行验证。
确保两台机器的相应端口能互相访问。
访问得到的结果如下:

怎么会访问出错呢?
翻了很久资料,发现有老外也遇到过类似这种问题:
I write this message because on actually working on this WOPI protocol. I try to build a WOPI host. I think i'm almost finish the "view" action. But i got some problems with the CheckFileInfo (JSON) or GetFile (/content). For me everything is well fonctionning,
but the WAC doesn't work just after it call my JSON. I really dont know why.. I observed all the interactions between SharePoint and WAC, to show what is different with mine host. But i think i need some help now. Does anyone can try to give me some hint ?
I checked everythings (Correlation-ID, JSON, access-token) ...
别人的回答是让他考虑一下是不是SHA散列算法的问题:
You might also double-check that your SHA hashes are being calculated correctly - this can cause some problems.
并给了一个网站地址:www.tylerbutler.com/.../base64-encoded-sha256-hashes
那就按照提示把散列算法加上去,
代码如下:
var file = HostingEnvironment.MapPath("~/App_Data/" + name);//从硬盘中获取name文件
FileInfo info = new FileInfo(file);
var hasher = SHA256.Create();
byte[] hashValue;
using (Stream s = File.OpenRead(file))
{
hashValue = hasher.ComputeHash(s);
}
string sha256 = Convert.ToBase64String(hashValue);
如下图:

再次运行,OK,大功告成

其实按照上述步骤,就可以在自己的系统中调用Office Web Apps的查看功能了,实在要看demo的同学可以去下列链接下载
http://download.csdn.net/detail/poisson1984/6003183
最近csdn上的积分吃紧,顺便刷点积分,
下面有一个外国的例子,会更全面:http://pan.baidu.com/s/1f4suc
相关推荐
总结来说,"Office Web Apps整合"涉及了Java后端开发、WOPI协议实现、认证集成、文件存储管理、前端展示等多个技术领域,是一个综合性的项目实施过程。通过这样的整合,用户可以在任何有网络的地方,使用任何设备,...
ASP.NET Office Web Apps 整合是一项技术,它允许开发者在Web环境下实现Microsoft Office应用程序(如Word、Excel)的功能,让用户可以在浏览器中查看、编辑和协作处理Office文档。这个技术结合了ASP.NET的强大Web...
使用`Import-Module ServerManager`导入模块,接着运行`Add-WindowsFeature`命令,添加一系列Web服务器角色和服务,包括Web服务器、静态内容、应用程序开发等,以满足Office Web Apps Server的基本需求。 完成基础...
1. **OWA Host**:这可能是一个自定义开发的Web应用程序,它利用Office Web Apps的API和服务接口,来在用户的Web浏览器中显示和操作Office文档。这个"OWA host"文件可能是一个源代码项目,使用Visual Studio 2012...
Office Web Apps (OWA) 是一套由微软开发的应用程序,允许用户在Web浏览器中查看、编辑和共同创作Office文档。本文旨在详细介绍如何在Windows Server 2008 R2环境下搭建OWA服务,以便用户可以通过网络访问和编辑...
### Office Web Apps系统调研知识点详解 #### 一、概述 Office Web Apps (OWA) 是一套基于Web的应用程序,能够使用户在Web浏览器中查看、编辑Microsoft Office文档(包括Word、Excel、PowerPoint)。这套系统提供了...
接着,在Office Web App服务器上安装IIS和.NET Framework 4.5.2,最后安装Office Web Apps Server并打上补丁SP1,确保系统运行稳定。 二、系统配置与部署 部署完成后,需在Office Web Apps服务器上以管理员身份...
作者在加入微软之前,有相当长的一段时间都是从事与Office平台定制和应用系统开发的工作,最早是做VBA的开发,后来有做过VSTO,这些都是Office 365开发环境搭建的重要组成部分。 其次,Microsoft Graph是Office 365...
该存储库称为web-apps-pro项目信息官方网站: : 代码存储库: : SaaS版本: : 用户反馈和支持如果您对有任何疑问或疑问,请访问我们的官方论坛以找到您的问题的答案: 或者您可以在上询问和回答ONLYOFFICE开发问题...
标题“ms_office_web_apps”所指的是一款针对Redmine项目管理系统的插件,其主要功能是集成Microsoft Office Web Apps,使得用户能够在浏览器环境下查看Word、Excel和PowerPoint等Office文档。这一特性极大地提升了...
描述中的"OfficeRIA"可能是一个误写,通常指的应该是Office Add-ins或者Office Web Apps,而不是RIA(Rich Internet Applications)。不过,我们可以理解为这个开发库可能包含创建RIA类似功能的能力,即开发可以在...
Web Apps是由微软提供的一个云端服务,允许用户在浏览器中直接查看和编辑Microsoft Office文档,无需安装本地的Office套件。ASP.NET可以与Web Apps集成,从而在Web应用中提供这种功能。 实现这个功能的关键在于利用...
总的来说,Microsoft PowerApps为Access Web应用开发人员提供了一种现代化的、更适应移动和云环境的替代方案,虽然存在一些差异,但通过学习和利用其特性和优势,可以构建出高效且功能强大的业务解决方案。
1. **Office Web Apps**:SharePoint 2010及更高版本内置了Office Web Apps,用户可以直接在浏览器中查看和编辑Office文档。 2. **SharePoint Designer**:通过SharePoint Designer,可以创建自定义列表、视图,并将...
文中还详细解释了Excel Add-in的三种开发方法(VBA、VSTO和Web Add-in),以及Office Web Add-in的技术原理。Office Add-in的清单文件和如何实现单点登录(SSO)也得到了阐述。 对于SharePoint Online的开发,文档...
WOPIHoste.zip是一个压缩包,包含用于实现Office Web Apps(OWA)文件在线编辑功能的C#中间件代码。这个中间件是对接微软的在线编辑服务的关键组件,允许用户在Web浏览器中直接查看和编辑Microsoft Office文档,如...
3. Office 2010:在2007的基础上进一步改进,提供更多的在线协作功能,增强了云服务支持,例如SkyDrive(现在的OneDrive)集成,还有Office Web Apps,可以在网页上预览和编辑文档。 4. Office 2013:首次全面支持...
随着技术的进步,Microsoft推出了更新的Web部件,如Office Web Apps和SharePoint Web Parts,它们在功能上更加强大,且适应现代Web标准。此外,还有许多开源和第三方库,如Google Charts、D3.js等,提供类似的服务...
Office Web Apps Server (OWA) 是由微软开发的一款应用程序,用于提供在线版本的Microsoft Office应用套件,如Word、Excel、PowerPoint 和 OneNote等。用户可以通过网页浏览器访问这些应用程序,实现对文档的查看与...
2010年,微软推出了Office Web Apps,让用户可以在浏览器中编辑文档。2013年,Office 365订阅服务问世,提供云端存储、实时协作和跨设备访问等功能。这一变化反映了办公场景的多元化需求。 在提供的文件名称列表中...