Реализация хоста WOPI, пытающаяся отрисовать документ в iframe asp.net mvc - PullRequest
0 голосов
/ 13 июня 2019

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

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

Я не получаю никаких звонков по моему API Контроллер

enter image description here

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 / мы / wordeditorframe.aspx? WOPISrc = HTTP% 3A% 2F% 2flocalhost% 3a32876% 2fapi% 2fwopi% 2ffiles% 2ftest.docx & access_token = XskWxXK0Nro % 3dhwYoiCFehrYAx85XQduYQHYQE9EEPC6EVgqaMiCp4% 2BG% 3d

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

Маршрут контроллера

 [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

1 Ответ

0 голосов
/ 14 июля 2019

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

Когда вы используете офисное онлайн-приложение, вам нужно указать публичный ip или доменное имя вашего сервера wopi вместо 'localhost'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...