Реализация хоста 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

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

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

 [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;
            }

        }

Это не соответствует API URL

1 ответ

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

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

Другие вопросы по тегам