Реализация хоста WOPI, пытается отобразить документ в iframe asp.net mvc

Я пытаюсь получить реализацию хоста Wopi в приложении ASP.NET MVC.

Использование этого проекта https://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6

Я не получаю звонков, попадающих в мой контроллер API

введите описание изображения здесь

URL обнаружения

<action name="view"
              ext="docx"
              default="true"
              urlsrc="http://word-edit.officeapps.live.com/wv/wordviewerframe.aspx?&lt;ui=UI_LLCC&amp;&gt;&lt;rs=DC_LLCC&amp;&gt;&lt;showpagestats=PERFSTATS&amp;&gt;" />

URL, созданный моим приложением

http://word-edit.officeapps.live.com/we/wordeditorframe.aspx?WOPISrc=http%3a%2f%2flocalhost%3a32876%2fapi%2fwopi%2ffiles%2ftest.docx&access_token=XskWxXK0Nro%3dhwYoiCFehrYAx85XQduYQHYQE9EEPC6EVgqaMiCp4%2bg%3d

Я использую локальный хост для тестирования

Controller Route

 [RoutePrefix("api/wopi")]
        public class FilesController : ApiController


[Route("files/{name}/")]
        public CheckFileInfo GetFileInfo(string name, string access_token)
        {
            Validate(name, access_token);

            var fileInfo = _fileHelper.GetFileInfo(name);

            bool updateEnabled = false;
            if (bool.TryParse(WebConfigurationManager.AppSettings["updateEnabled"].ToString(), out updateEnabled))
            {
                fileInfo.SupportsUpdate = updateEnabled;
                fileInfo.UserCanWrite = updateEnabled;
                fileInfo.SupportsLocks = updateEnabled;
            }

            return fileInfo;
        }

        // GET api/<controller>/5
        /// <summary>
        /// Get a single file contents
        /// </summary>
        /// <param name="name">filename</param>
        /// <returns>a file stream</returns>
        [Route("files/{name}/contents")]
        public HttpResponseMessage Get(string name, string access_token)
        {
            try
            {
                Validate(name, access_token);
                var file = HostingEnvironment.MapPath("~/App_Data/" + name);
                var responseMessage = new HttpResponseMessage(HttpStatusCode.OK);
                var stream = new FileStream(file, FileMode.Open, FileAccess.Read);

                responseMessage.Content = new StreamContent(stream);
                responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                return responseMessage;

            }
            catch (Exception ex)
            {
                var errorResponseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError);
                var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(ex.Message ?? ""));
                errorResponseMessage.Content = new StreamContent(stream);
                return errorResponseMessage;
            }

        }

Он не попадает в URL-адрес API


person ZCoder    schedule 13.06.2019    source источник
comment
вы нашли способ протестировать wopi локально?   -  person yakhtarali    schedule 21.06.2021


Ответы (1)


WOPISrc не может быть localhost, это должна быть ссылка, к которой может получить доступ сервер офисных приложений,

Пока вы используете офисное онлайн-приложение, вам необходимо указать общедоступный IP-адрес или доменное имя вашего сервера wopi вместо localhost.

person Hassan Alhaj    schedule 14.07.2019
comment
Другими словами, клиент WOPI (Office Online Server) будет использовать URL-адрес, указанный в WOPISrc, для доступа к двоичным данным файла, и если URL-адрес указывает на localhost, клиент WOPI (OOS) попытается получить файл из своего собственного машина. Маловероятно, что вы запускаете хост WOPI на том же компьютере, что и клиент WOPI. - person rocky; 05.08.2019