Solução de problemas de suplementos de alto nível de confiança do SharePoint
Usar a ferramenta Fiddler
A ferramenta gratuita Fiddler pode ser usada para capturar as solicitações HTTP enviadas pelo componente remoto do seu suplemento para o SharePoint.
Há uma extensão gratuita para a ferramenta que decodifica automaticamente os tokens de acesso nas solicitações.
Depois de instalar o Fiddler no servidor de aplicativos Web, adicione a marcação a seguir ao arquivo web.config para fazer solicitações de seu aplicativo Web remoto passar por esse proxy. Dessa forma, você pode capturar um rastreamento do Fiddler e ver a resposta completa do SharePoint quando receber um erro.
Observação
Verifique se você removerá essa marcação se não estiver executando o Fiddler. Se você não remover a marcação, seu suplemento não poderá fazer solicitações HTTP.
<system.net>
<defaultProxy>
<proxy usesystemdefault="False" bypassonlocal="False" proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
Depois de instalar o Fiddler, você também pode verificar os cabeçalhos de resposta do SharePoint, que incluem um GUID de solicitação. Este GUID de solicitação é uma ID de correlação que você pode pesquisar nos logs para encontrar quaisquer erros de log associados a essa solicitação.
401 Erro não autorizado
Várias coisas podem causar um erro não autorizado 401 quando o suplemento de alta confiança acessa o SharePoint. Se você estiver usando o CSOM (modelo de objeto do lado do cliente), o erro será semelhante ao seguinte:
[WebException: The remote server returned an error: (401) Unauthorized.]
System.Net.HttpWebRequest.GetResponse() +8515936
Microsoft.SharePoint.Client.SPWebRequestExecutor.Execute() +178
Microsoft.SharePoint.Client.ClientRequest.ExecuteQueryToServer(ChunkStringBuilder sb) +1427
Microsoft.SharePoint.Client.ClientRequest.ExecuteQuery() +270
Microsoft.SharePoint.Client.ClientRuntimeContext.ExecuteQuery() +146
Microsoft.SharePoint.Client.ClientContext.ExecuteQuery() +666
S2STestWeb.Default.Page_Load(Object sender, EventArgs e) in c:\MyFiles\HightrustTest\HightrustTestWeb\Default.aspx.cs:28
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178
Se você estiver usando o arquivo TokenHelper e a identidade do Windows, o código que dispara a exceção será semelhante ao seguinte:
ClientContext clientContext =
TokenHelper.GetS2SClientContextWithWindowsIdentity(sharepointUrl, Request.LogonUserIdentity);
clientContext.Load(clientContext.Web);
clientContext.ExecuteQuery();
Sua primeira etapa na solução de problemas do problema é usar o depurador do Visual Studio para verificar se o token de acesso e o objeto ClientContext foram construídos com êxito. Se estiverem, investigue as seguintes possibilidades:
Possível problema e resolução:
Não há nenhum perfil de usuário criado para o usuário que está acessando o aplicativo Web remoto. Crie o perfil do usuário.
Seu suplemento não tem permissão para o recurso que você está tentando acessar. Abra o Shell de Gerenciamento do SharePoint e execute o cmdlet Windows PowerShell a seguir. A variável
$web
é o site do SharePoint ao qual você está tentando obter acesso e$appPrincipal
é a ID do suplemento. Para obter mais informações, consulte Set-SPAppPrincipalPermission.Set-SPAppPrincipalPermission -Site $web -AppPrincipal $appPrincipal -Scope Site -Right FullControl
Seu aplicativo Web está aceitando solicitações anônimas. Isso significa que não há uma identidade de usuário real no token de acesso. Verifique se o acesso anônimo foi desabilitado no IIS para o diretório raiz do seu aplicativo Web remoto. Você também pode verificar isso depurando seu aplicativo Web remoto e verificando o valor de Request.LogonUserIdentity no arquivo default.aspx.cs (ou .vb) para garantir que ele não seja um usuário anônimo.
Seu certificado digital não foi adicionado ao repositório de certificados confiável. Verifique se você seguiu os procedimentos em Pacote e publique suplementos do SharePoint de alta confiança.
Erros de autorização relacionados a domínio e SSL diversos
Uma incompatibilidade de nomes de domínio em arquivos de configuração e formulários de registro pode impedir a autorização. Os quatro valores a seguir devem ser exatamente os mesmos:
O Domínio de Suplemento especificado quando o Suplemento do SharePoint é registrado em AppRegNew.aspx.
O domínio sob o qual o certificado de segurança do aplicativo Web remoto é registrado.
A parte de domínio do valor StartPage no arquivo AppManifest.xml.
A parte de domínio das URLs de qualquer receptor de evento especificado no AppManifest.xml.
Em relação a esse ponto, observe o seguinte:
Se o componente remoto do seu suplemento do SharePoint estiver usando qualquer porta diferente da 443, você deverá incluir explicitamente a porta como parte do domínio em todos os quatro lugares, por exemplo,
MarketingServer:3333
. (Você deve usar o protocolo HTTPS, para o qual a porta padrão é 443.)O domínio deve ser codificado no valor StartPage (e nas URLs de destinatário de qualquer evento) do arquivo AppManifest.xml antes que o suplemento seja empacotado. Se você usar o Assistente de Publicação no Visual Studio para empacotar o suplemento, será solicitado o domínio e as Office Developer Tools para Visual Studio as inserem no valor StartPage para você, no lugar do token
~remoteWebUrl
usado durante a depuração. Mas se você não estiver usando o Assistente de Publicação, deverá substituir manualmente o token pelo domínio (e protocolo); por exemplohttps://MarketingServer
ouhttps://MarketingServer:3333
.
Erro de tempo de execução dizendo que não há certificado com esse número de série
Se você tiver certeza de que tem o número de série de certificado correto no web.config e pode ver o certificado no Repositório de Certificados do Windows, pode haver um caractere extra oculto no número de série no web.config. Isso acontecerá se o número de série for copiado e colado do Console de Gerenciamento da Microsoft. Exclua todo o valor do número de série do web.config e o retipo manualmente .