下载资源后端资源详情
PnP-WOPI-master.zip
大小:430.34KB
价格:20积分
下载量:0
评分:
5.0
上传者:qq_30220519
更新日期:2025-09-22

PnP-WOPI-master.zip

资源文件列表(大概)

文件名
大小
PnP-WOPI-master/
-
PnP-WOPI-master/.gitignore
2.84KB
PnP-WOPI-master/LICENSE
1.06KB
PnP-WOPI-master/README.md
8.24KB
PnP-WOPI-master/com.microsoft.dx.officewopi.sln
1KB
PnP-WOPI-master/com.microsoft.dx.officewopi/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/App_Start/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/App_Start/BundleConfig.cs
1.23KB
PnP-WOPI-master/com.microsoft.dx.officewopi/App_Start/FilterConfig.cs
282B
PnP-WOPI-master/com.microsoft.dx.officewopi/App_Start/RouteConfig.cs
620B
PnP-WOPI-master/com.microsoft.dx.officewopi/App_Start/Startup.Auth.cs
4.25KB
PnP-WOPI-master/com.microsoft.dx.officewopi/App_Start/WebApiConfig.cs
799B
PnP-WOPI-master/com.microsoft.dx.officewopi/Content/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Content/Site.css
1.45KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Content/bootstrap.css
117.68KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Content/bootstrap.min.css
95.65KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Controllers/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Controllers/HomeController.cs
6.35KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Controllers/filesController.cs
1.57KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Controllers/foldersController.cs
1.37KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Global.asax
118B
PnP-WOPI-master/com.microsoft.dx.officewopi/Global.asax.cs
677B
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/DetailedFileModel.cs
4.15KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/FileModel.cs
1.17KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/Wopi/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/Wopi/WopiAction.cs
705B
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/Wopi/WopiProof.cs
590B
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/Wopi/WopiRequest.cs
482B
PnP-WOPI-master/com.microsoft.dx.officewopi/Models/Wopi/WopiRequestType.cs
1.05KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Project_Readme.html
5.01KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Properties/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Properties/AssemblyInfo.cs
1.35KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/_references.js
684B
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/bootstrap.js
57.86KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/bootstrap.min.js
27.85KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/filedrop-min.js
17.63KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery-1.10.2.intellisense.js
155.99KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery-1.10.2.js
267.57KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery-1.10.2.min.js
91.93KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery-1.10.2.min.map
136.75KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery.validate-vsdoc.js
42.36KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery.validate.js
38.81KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery.validate.min.js
21.35KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery.validate.unobtrusive.js
18.95KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/jquery.validate.unobtrusive.min.js
6.13KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/modernizr-2.6.2.js
50.25KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/respond.js
10.08KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Scripts/respond.min.js
4.75KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Security/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Security/WopiSecurity.cs
4.95KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Security/WopiTokenValidationFilter.cs
2.64KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Startup.cs
272B
PnP-WOPI-master/com.microsoft.dx.officewopi/Utils/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Utils/AzureStorageUtil.cs
9.23KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Utils/DocumentDBRepository.cs
4.68KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Utils/SettingsHelper.cs
891B
PnP-WOPI-master/com.microsoft.dx.officewopi/Utils/WopiExtensions.cs
34.75KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Utils/WopiUtil.cs
15.93KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Home/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Home/Detail.cshtml
1.01KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Home/Error.cshtml
98B
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Home/Index.cshtml
7.16KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Shared/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Shared/Error.cshtml
192B
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Shared/_Layout.cshtml
1.01KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Shared/_LayoutWOPI.cshtml
430B
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Shared/_LoginPartial.cshtml
398B
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/Web.config
1.86KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Views/_ViewStart.cshtml
54B
PnP-WOPI-master/com.microsoft.dx.officewopi/Web.Debug.config
1.21KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Web.Release.config
1.27KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Web.config
4.73KB
PnP-WOPI-master/com.microsoft.dx.officewopi/Web.config.backup.1
2.76KB
PnP-WOPI-master/com.microsoft.dx.officewopi/com.microsoft.dx.officewopi.csproj
19.46KB
PnP-WOPI-master/com.microsoft.dx.officewopi/favicon.ico
31.29KB
PnP-WOPI-master/com.microsoft.dx.officewopi/fonts/
-
PnP-WOPI-master/com.microsoft.dx.officewopi/fonts/glyphicons-halflings-regular.eot
13.75KB
PnP-WOPI-master/com.microsoft.dx.officewopi/fonts/glyphicons-halflings-regular.svg
61.68KB
PnP-WOPI-master/com.microsoft.dx.officewopi/fonts/glyphicons-halflings-regular.ttf
28.82KB
PnP-WOPI-master/com.microsoft.dx.officewopi/fonts/glyphicons-halflings-regular.woff
16.06KB
PnP-WOPI-master/com.microsoft.dx.officewopi/packages.config
3.26KB
PnP-WOPI-master/com.microsoft.dx.officewopi/wopitest.wopitest
14B

资源内容介绍

office文件读写程序
---page_type: sampleproducts:- office-365languages:- csharpextensions: contentType: samples createdDate: 1/14/2016 6:35:35 AM---# PnP-WOPIThis repository contains an application that integrates with Office Online for viewing/editing Office documents. This type of integration classifies this application as a WOPI host. WOPI (Web Application Open Platform Interface) is a protocol for integrating with Office Online and is documented in detail at [https://wopi.readthedocs.org](https://wopi.readthedocs.org "https://wopi.readthedocs.org"). This sample illustrates many important patterns and practices for implementing a WOPI host, a number of which are outlined in this readme. This WOPI host implementation is deployed to [https://officewopi.azurewebsites.net](https://officewopi.azurewebsites.net "https://officewopi.azurewebsites.net") and can be used/tested by anyone with an organization/student account registered with Microsoft (read: Office 365 logins). It is provided for testing/experimenting purposes and offered with no service level agreement.> NOTE: You cannot simply clone and run this sample locally. Integrating with Office Online requires that your host domain is white-listed by Microsoft. The first step to white-listing a domain is to join the Cloud Storage Provider Program detail [HERE](http://dev.office.com/programs/officecloudstorage "HERE"). Additionally, a WOPI host must expose endpoints to the internet that Office Online can communicate with (read: localhost probably won't work).## Solution Overview ##This WOPI host sample is written in ASP.NET/C# with MVC for the user interface and Web API for the WOPI endpoints. Although it uses Azure AD for user identity, Azure AD has NOTHING to do with the WOPI integration. A WOPI host can use virtually any identity provider (or function anonymously). The sample stores files in Azure Blob Storage and file metadata in Azure DocumentDB (a NoSQL platform service similar to MongoDB). There a number of configuration values that should be updated in the web.config to support the identity and storage providers: <!-- These are Azure AD specific properties--> <add key="ida:ClientId" value="CLIENT ID FROM AZURE AD" /> <add key="ida:ClientSecret" value="CLIENT SECRET FROM AZURE AD" /> <!-- This is the private key to the self-signed cert...probably shouldn't be in config file --> <add key="CertPassword" value="CERT PRIVATE KEY/PASSWORD"/> <!-- These are properties for Azure Blob Storage --> <add key="abs:Protocol" value="AZURE BLOB STORAGE PROTOCOL...LIKELY https" /> <add key="abs:AccountName" value="AZURE BLOB STORAGE ACCOUNT NAME" /> <add key="abs:AccountKey" value="AZURE BLOB STORAGE ACCOUNT KEY" /> <!-- These are properties for DocumentDB --> <add key="ddb:endpoint" value="DOCUMENTDB ENDPOINT" /> <add key="ddb:authKey" value="DOCUMENTDB AUTH KEY" /> <add key="ddb:database" value="DOCUMENTDB DATABASE NAME" />A WOPI host is composed of two primary components...a frame to host the Office Online renderings and endpoints that Office Online can call into to perform specific operations (ex: GetFile, PutFile, etc). Both of these components and their unique considerations are detailed below.## WOPI Host Page ##The WOPI host page for this sample is found in the **Home/Detail** view with logic in the **Detail** method of the **HomeController.cs**. This page can only be invoked with a WOPI action and a file id. The WOPI action includes details on how to reach Office Online for the desired action (ex: view, edit, etc). The file id is used to look up file details which placed in a form in the Detail view that is posted to the WOPI action URL. When invoked, the controller will also generate a user and file specific access token that is part of the POST to the WOPI action URL. <form id="office_form" name="office_form" target="office_frame" action='@ViewData["wopi_urlsrc"]' method="post"> <input name="access_token" value='@ViewData["access_token"]' type="hidden" /> <input name="access_token_ttl" value='@ViewData["access_token_ttl"]' type="hidden" /> </form> <span id="frameholder"></span> <script type="text/javascript"> var frameholder = document.getElementById("frameholder"); var office_frame = document.createElement("iframe"); office_frame.name = "office_frame"; office_frame.id ="office_frame"; frameholder.appendChild(office_frame);//Submit the form the WOPI action URL document.getElementById("office_form").submit(); </script>Essentially, the WOPI Host Page hosts and posts data to a big IFRAME that renders Office Online.## WOPI Endpoints ##The WOPI endpoints should not use the default auth that is configured in Startup.Auth.cs. Remember, Office Online is what calls into these endpoints and it has no dependency on Azure AD. Office Online will pass an access token in the header of all WOPI requests (using the Authorization header). This is the exact same access token that the WOPI Host Page generated a posted to the WOPI action URL. To accomplish this from the same web application, the **WebApiConfig.cs** needs to ignore the default authentication:// Ignore AAD Auth for WebAPI...will be handled by WopiTokenValidationFilter classconfig.SuppressDefaultHostAuthentication();The application also needs a **AuthorizeAttribute** to validate the access token on requests. This sample implements this in the **WopiTokenValidationFilter** class. The WebAPI routes are all configured with this filter as seen below. The **WopiSecurity** class contains methods to generate and validate our custom access tokens.[WopiTokenValidationFilter] [HttpGet] [Route("wopi/files/{id}")] public async Task<HttpResponseMessage> Get(Guid id) { //Handles CheckFileInfo return await HttpContext.Current.ProcessWopiRequest(); }One of the challenges of implementing the WOPI endpoints with WebAPI is that most of the WOPI operations use the same few routes. Operations are instead determined by the header details included on requests. As such, the **filesController** has four generic endpoints that simply call a **ProcessWopiRequest** extension on the HttpContext: [WopiTokenValidationFilter] public class filesController : ApiController { [WopiTokenValidationFilter] [HttpGet] [Route("wopi/files/{id}")] public async Task<HttpResponseMessage> Get(Guid id) { //Handles CheckFileInfo return await HttpContext.Current.ProcessWopiRequest(); } [WopiTokenValidationFilter] [HttpGet] [Route("wopi/files/{id}/contents")] public async Task<HttpResponseMessage> Contents(Guid id) { //Handles GetFile return await HttpContext.Current.ProcessWopiRequest(); } [WopiTokenValidationFilter] [HttpPost] [Route("wopi/files/{id}")] public async Task<HttpResponseMessage> Post(Guid id) { //Handles Lock, GetLock, RefreshLock, Unlock, UnlockAndRelock, PutRelativeFile, RenameFile, PutUserInfo return await HttpContext.Current.ProcessWopiRequest(); } [WopiTokenValidationFilter] [HttpPost] [Route("wopi/files/{id}/contents")] public async Task<HttpResponseMessage> PostContents(Guid id) { //Handles PutFile return await HttpContext.Current.ProcessWopiRequest(); } }Most of the WOPI logic exists in the **WOPIExtensions.cs** and **WOPIUtils.cs** files. The **WOPIExtensions.cs** file contains extension methods for each WOPI operation and the **WOPIUtils.cs** contains utility methods for doing things such as WOPI discovery (which lists all the actions and proof keys for the WOPI integration), validating WOPI proof (ie - proving that the WOPI request actually came from Offi

用户评论 (0)

发表评论

captcha