Tan*_*may 5 ms-word asp.net-web-api asp.net-web-api2 office365api office-js
朋友们
我正在尝试从Word加载项调用API,并收到“访问被拒绝”错误。我做了一些研究,看来是“跨源资源共享”的原因。
1. Web API
我在“ http:// localhost:61546 / api / ORG_NAMES ” 本地托管Web API 2,并且已启用CORS接受所有来源,请参见下面的WebApiConfig。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Run Code Online (Sandbox Code Playgroud)
2.测试申请
为了测试此API以确保它支持CORS,我已经在下面的页面中创建并托管在localhost:52799 / home.html上,我能够获得预期的响应。我已经在IE 10和Chrome中对此进行了测试。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function () {
var obj;
.support.cors = true;
$.getJSON("http://localhost:61546/api/ORG_NAMES/112233",
function (data) {
alert(data.ORG_ID);
});
});
});
</script>
</head>
<body>
<button>Click me</button>
</body>
Run Code Online (Sandbox Code Playgroud)
3. Word加载项
现在,我想从我的Word Web加载项中调用此API。从其他主机https:// localhost:44339 /运行的Word加载项,请参见以下代码。在这里,getJSON返回“访问被拒绝”。
var OrgID;
$.getJSON("http://localhost:61546/api/ORG_NAMES/112233",
function (data) {
OrgID = data.ORG_ID;
});
Run Code Online (Sandbox Code Playgroud)
另外,当我从单词加载项调用API时,它不会变成提琴手。
注意:这是“ Web加载项-> Word加载项”项目。
4.修复-需要帮助
不知道为什么我会从Word加载项中收到“访问被拒绝”错误,如果CORS是问题,那么我的测试应用程序(#2)应该不起作用,对吗?
我尝试使用“ $ .ajax”,“ XMLHttpRequest”调用JSON,但是它没有用。我可能缺少某些配置设置。
在这里感谢任何帮助。如果您需要更多信息,请与我们联系。
由于这听起来像是仅 Office 加载项中的问题,而不是常规页面中的问题,因此您是否尝试过AppDomains在清单文件中进行设置?请参阅https://dev.office.com/docs/add-ins/overview/add-in-manifests中的“指定要在加载项窗口中打开的域”
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
<Id>c6890c26-5bbb-40ed-a321-37f07909a2f0</Id>
<Version>1.0</Version>
<ProviderName>Contoso, Ltd</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Northwind Traders Excel" />
<Description DefaultValue="Search Northwind Traders data from Excel"/>
<AppDomains>
<AppDomain>https://www.northwindtraders.com</AppDomain>
</AppDomains>
<DefaultSettings>
<SourceLocation DefaultValue="https://www.contoso.com/search_app/Default.aspx" />
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
</OfficeApp>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |