我在主机端收到“未授权”例外,以获取提供商托管的SharePoint 2013应用程序。
Uri hostWeb = new Uri(Request.QueryString["SPHostUrl"]);
using (var clientContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWeb, Request.LogonUserIdentity))
{
clientContext.Load(clientContext.Web, web => web.Title);
clientContext.ExecuteQuery();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
已安装证书,已停用Anonymos访问权限。我无法理解这个问题的原因。
答案 0 :(得分:2)
我之前遇到了完全相同的问题...我通过实施OAuth解决了这个问题并让它以“写入”权限重定向到应用主页面。 Response.Redirect(TokenHelper.GetAuthorizationUrl(“mysharepoint.com”,“Web.Write”,“myapp.com/default.aspx”));
基本上它的作用是它会使用您的sharepoint站点对登录用户进行身份验证,一旦经过身份验证,它就会重定向(具有写入权限)到您的应用站点。
以下是实施OAuth的方法:http://msdn.microsoft.com/en-us/library/office/jj687470(v=office.15).aspx
答案 1 :(得分:1)
看起来这是High Trust App。如果您已经用尽了http://msdn.microsoft.com/en-us/library/fp179932.aspx处的提示,那么就会出现一个格式错误的SPTrustedSecurityTokenIssuer。你可以使用下面的PS找到所有这些。理想情况下应该是IssuerId @ Realm。如果有一个不是,那么删除它。但请记住不要删除第一个用于工作流程的
Get-SPTrustedSecurityTokenIssuer |选择Name,RegisteredIssuerName
答案 2 :(得分:0)
首先,您必须在'Request.LogonUserIdentity'中检查用户。实际上,当您的用户无法访问IIS中的站点时,就会发生这种情况。 所以要在'Request.LogonUserIdentity'中设置正确的用户,请按照以下步骤操作:
打开您的IIS - >身份验证 - >匿名身份验证 - >编辑 - >特定用户[您在“Request.LogonUserIdentity”中获得的用户]。 - > IISRESET
现在用户有权访问您的IIS站点。