自定义WOPI实现



我正在尝试为存储在本地文件系统中的文件实现预览(WOPI(。我正在尝试使用我们的Office Online服务器场来实现它。我使用了下面的代码,但它调用了"Get"端点,但之后它不调用"contents"端点。

URL-http://ServerName/wv/wordviewerframe.aspx?ui=1033&rs=1033&dchat=false&hid=1&IsLicensedUser=1&WOPISrc=http://WOPIHost:8082/wopi/files/00000000-0000-0000-0000-000000000000&access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InhYbQwSUp4MlZCVEJFeVFMdGtOFY2ZkhwZyJ9%2EyJhdWQiOiJ3b3BpL3F1aW50aWxlcy5zaGFyZXBvaW50LmNvbUA1OTg5ZWNlMC1mOTBlLTQwYtWM3OSOxYTdiZWNjZGI4NjEiLCJpc3MiOiIwMDAwMDAw My0wMDAwLTBmZjEtY2UwMDawMDAwAwMDBAOTAxNDAxMjItODUxNi0xMWUxLThlZmYtNDkzMDQ5MjQwMTliIwibmJmIjoiMTU4MzIxOTgwNCISIMV4cCI6IjE1ODMyNT4MDQiLCJuYW1laWQiOiIIy5mfG1lbWJlcNoaXB8Z29rdWwuYWdAaW4uaW1zaGVhbHRoLmNvbSIm5paSI6Im1pY3Jvc29mdC5zaGFyZXBvaW50IiwiaXN1c2VyJoidHJ1ZSIsImNhY2hla2V5IjoiMGguZnxtZW1iZXJzaGlwfDEwMDMzmZmOWIxNjZlNmNAbGl2ZS5jb20iLCJzaWduaW5fc3RhdGUiOiJbXCJrbXpXCIsXCJkdmNfZG1qZFwiXSIsImlzbG9vcGJhY2si OiJUcnVlIiwiYXBwY3R4IijoiMjBhMTViZGM2Y2QyNDRjMzkyMzNjYjQxNDFiNDc1OTU7dlhqbUZlRWpsc2p4TTFaeTMxT2ZFVmlKQUUwPTtEZWzhdWx0Oz3RkZGRkZGRskZGO1RydWU7OzswO2RlMTYzYjlmLWEwMTgtYTAwMC1mZWRiLTQ1MzBmN2Q0MjYwMSJ9%2EXmvaQMvtq0ClU1rHW%5FibIx7OjQ7nbmXVO9Bs3JmH%2DCqxdxtaJKKqC9sd3j2cjfFIIsYFw%2DOpoZ6rpp5ijcl3wWJWX0uR%2DsgdAi4If49dQnbDDundCuKl%2D7PFc96M60ByVa0jbywUvFW8FhoR2bPdVMBYiILC5oExOc4BCGgWoUNE9n%2Dv74fWJrFbJFtMVa3n%2DCQHy8SXh%5F3O2SaSVw9MPYdELSbPnvqsz4l8mUrEb%2Dhs3kW2n3d1nSuhjcEn8JyMZUrFk%5Fxl2GEbGh8A2KavTql1W5MBlXPzL2r4Ynn1A3XTguYcsieF%5FORhCemm%5FMFbDGMgUvlb%2Dkwg&access_token_tl=1583752281063

{
[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();
}
}``` 

最后我发现了这个问题。Version字段应该是类似于"1.0.0.0"的字符串,而不是int.

这是响应-{"UserId":"user@domain.com","CloseUrl":"https://<server>:8082","HostEditUrl":"http://<server>/we/wordeditorframe.aspx?ui=1033&rs=1033&dchat=false&hid=1&IsLicensedUser=1&WOPISrc=http://<server>:8082/wopi/files/00000000-0000-0000-0000-000000000000","HostViewUrl":"http://<server>/wv/wordviewerframe.aspx?ui=1033&rs=1033&dchat=false&hid=1&IsLicensedUser=1&WOPISrc=http://<server>:8082/wopi/files/00000000-0000-0000-0000-000000000000","SupportsCoauth":false,"SupportsExtendedLockLength":false,"SupportsFileCreation":false,"SupportsFolders":false,"SupportsGetLock":true,"SupportsLocks":true,"SupportsRename":true,"SupportsScenarioLinks":false,"SupportsSecureStore":false,"SupportsUpdate":true,"SupportsUserInfo":true,"LicensesCheckForEditIsEnabled":true,"ReadOnly":false,"RestrictedWebViewOnly":false,"UserCanAttend":false,"UserCanNotWriteRelative":false,"UserCanPresent":false,"UserCanRename":true,"UserCanWrite":true,"WebEditingDisabled":false,"Actions":null,"id":"00000000-0000-0000-0000-000000000000","LockValue":null,"LockExpires":null,"OwnerId":"user@domain.com","BaseFileName":"Test.docx","Container":null,"Size":102400,"Version":1,"UserInfo":null}

最新更新