我使用ASP.NET MVC在Azure上部署了SharePoint提供程序托管应用程序 . 因为我们选择使用AngularJS,所以我们也添加了ASP.NET Web API控制器 . 我们已经设法通过cookie共享来自MVC控制器的令牌信息在API控制器中创建SharePoint客户端上下文(API控制器操作具有SharePointApiContextFilter,就像MVC控制器具有SharePointContextFilter来处理SharePoint客户端上下文创建一样) .

我添加了一个用于报告目的的OData控制器,它将数据导出到Excel(通过Excel的OData数据源导入) . 我想让这个控制器在线验证SharePoint . Excel已经实现了此功能,因为我尝试通过REST从SharePoint库导入数据 .

使用Fiddler,我注意到SharePoint在线返回带有身份验证质询(WWW-Authenticate)标头的401响应:

WWW-Authenticate:IDCRL Type =“BPOSIDCRL”,EndPoint =“/ sites / Test / _vti_bin / idcrl.svc /”,RootDomain =“sharepoint.com”,Policy =“MBI”

这是完整的回复:

HTTP / 1.1 401 Unauthorized Cache-Control:private,max-age = 0 Content-Length:0 Content-Type:application / xml; charset = utf-8 Expires:Tue,07 Jul 2015 07:34:08 GMT Last-修改时间:2015年7月22日星期三07:34:08 GMT服务器:Microsoft-IIS / 8.5 X-SharePointHealthScore:0 X-MSDAVEXT_Error:917656;拒绝访问 . 在此位置%2c中打开文件之前,您必须先浏览到该网站并选择自动登录的选项 . DATASERVICEVERSION:3.0 X-AspNet-Version:4.0.30319 SPRequestGuid:be6d1c9d-806b-2000-20ed-4d42443d8365 request-id:be6d1c9d-806b-2000-20ed-4d42443d8365 X-FRAME-OPTIONS:SAMEORIGIN X-Powered-By:ASP .NET MicrosoftSharePointTeamServices:16.0.0.4121 X-Content-Type-Options:nosniff X-MS-InvokeApp:1; RequireReadOnly P3P:CP =“ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI”WWW-Authenticate:IDCRL Type =“BPOSIDCRL”,EndPoint =“/ sites / Test /_vti_bin/idcrl.svc/“,RootDomain =”sharepoint.com“,政策=”MBI“日期:2015年7月22日星期三07:34:08 GMT

有人可以告诉我如何在OData控制器中构建这种类型的响应(可能通过自定义动作过滤器)?