我有一个C#asp.net MVC项目,它将用作Web API来调用SharePoint 2013端点。我已经开始使用开发人员站点配置SharePoint,将适当的应用程序信息添加到项目中的App.manifest和web.config文件,使用SharePoint站点注册应用程序,以及为令牌创建/设置证书发行人。据我所知,是的,我已经检查过几次,所有正确的信息都输入了正确的位置。
我试图运行的代码如下:
[SharePointApiControllerContextFilter]
[HttpPost]
[Route("api/testapi/search/{id}")]
public System.Web.Http.Results.JsonResult<string> Search(string id)
{
var spContext = SharePointApiControllerContextProvider.Current.GetSharePointContext(ControllerContext);
string data = string.Empty;
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
if (clientContext != null)
{
try
{
string url = spContext.SPHostUrl + "_api/search/query?querytext='" + HttpUtility.HtmlEncode(id) + "'";
Uri uri = new Uri(url);
HttpWebRequest searchReq = (HttpWebRequest)HttpWebRequest.Create(uri);
searchReq.Accept = "application/json;odata=verbose";
String username = "username";
String password = "password";
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
searchReq.Headers.Add("Authorization", "Basic " + encoded);
HttpWebResponse results = (HttpWebResponse)searchReq.GetResponse();
var stream = results.GetResponseStream();
var readStream = new StreamReader(stream, Encoding.UTF8);
var content = readStream.ReadToEnd();
return Json<string>(content);
}
catch (WebException we)
{
return Json<string>(we.ToString());
}
catch (Exception e) {
return Json<string>(e.ToString());
}
}
}
return Json<string>(data);
}
在服务器上的IIS中,仅启用基本身份验证,ASP.net模拟和表单身份验证。
似乎所有内容都设置正确,但是根据我的基本身份验证请求,我总是从SharePoint获得401未经授权的响应。我还注意到,实际的API端点在从Web浏览器直接访问时会无限重定向。
有人会帮我解决API和端点的问题吗?感谢。