gpt4 book ai didi

c# - WOPI 主机实现,试图在 iframe asp.net mvc 中呈现文档

转载 作者:太空宇宙 更新时间:2023-11-03 12:02:11 40 4
gpt4 key购买 nike

我正在尝试在 ASP.NET MVC 应用程序中获取 Wopi 主机实现。

使用这个项目 https://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6

我的 API Controller 没有收到任何调用

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/we/wordeditorframe.aspx?WOPISrc=http%3a%2f%2flocalhost%3a32876%2fapi%2fwopi%2ffiles%2ftest.docx&access_token=XskWxXK0Nro%3dhwYoiCFehrYAx85XQduYQHYQE9EEPC6EVgqaMiCp4%2bg%3d

我正在使用本地主机进行测试

Controller 路由

 [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

最佳答案

WOPISrc不能是'localhost',必须是office应用服务器可以访问的链接,

当你使用office在线应用时,你需要提供你的wopi服务器的公网ip或域名,而不是'localhost'

关于c# - WOPI 主机实现,试图在 iframe asp.net mvc 中呈现文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56585168/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com