我们将大部分网站迁移到 Cloud 中的SharePoint服务器 . 我们当前的设置使用MVC Web API从数据库中检索数据 . 我们不希望在单独的域下托管API,因此也需要在SharePoint域下移动API . 这个要求没有放松 .
有没有办法将我的API发布到SharePoint?或者Visual Studio中是否有特定于SharePoint的API项目模板?如果没有,我的选择是什么?
EDIT 最初我已经要求MVC API需要成为SharePoint 2013的一部分 . 但现在,只要可以从根域访问,API就可以驻留在SharePoint的任何位置(内部或外部) - 到目前为止它似乎不允许(错误消息: Calls to WebProxy without an app context are not allowed. “) . 仍然试图看看这是否可能,如果可以,怎么样?
3 回答
听起来您想要创建的代理已经是SharePoint JSOM的一部分 . 看看这些:
http://msdn.microsoft.com/en-us/library/office/fp179895(v=office.15).aspx
http://msdn.microsoft.com/en-us/library/office/jj245162(v=office.15).aspx
这将允许您克服跨源问题 .
SP.WebProxy
和SP.WebRequestInfo
允许您使用javascript在javascript执行的域之外进行调用 .幕后真正发生的是SharePoint的JavaScript API将请求发送到您的sharepoint.com租赁服务器,然后该服务器将从SharePoint服务器调用该服务,并将响应返回给您的javascript . 您可以在sharepoint托管的应用中实现它:
...并且由于从服务器调用在其他域上托管的远程api,因此您不必担心任何跨域问题 .
Update
要回答您的更新,请check the results from this link .
您是否已将远程 endpoints 添加到AppManifest.xml?
SharePoint不会为您提供定义自己路由的机会 . 这就是为什么你不能使用老式的SharePoint解决方案来发布asp.net web api . 您可以考虑使用apps for SharePoint . 它就像是与SharePoint有一些连接的独立应用程序 .
最终切换到JSONP解决方案 . 在Visual Studio中的MVC Web API项目中安装了WebApiContrib.Formatting.JsonP,并调整了调用API的SharePoint JavaScript,以包含
?callback=?
(回调等于问号) . 一切都保持不变 . 没有SharePoint的代理调用者需要!不需要SharePoint应用程序!