SharePoint提供商托管的应用程序问题

SharePoint提供商托管的应用程序问题,sharepoint,Sharepoint,我是SharePoint povider托管应用程序的新手。我使用此链接“”在本地系统中进行了配置,但当我单击f5时,我收到了此问题 “System.dll中发生'System.Net.WebException'类型的异常,但未在用户代码中处理 其他信息:基础连接已关闭:发送时发生意外错误 你能帮我解决这个问题吗。medathi@gmail.com“如果在运行高度信任的应用程序/加载项时遇到401未经授权的错误 请尝试以下步骤: 使用PowerShell cmdlet获取服务器场中所有Trust

我是SharePoint povider托管应用程序的新手。我使用此链接“”在本地系统中进行了配置,但当我单击f5时,我收到了此问题 “System.dll中发生'System.Net.WebException'类型的异常,但未在用户代码中处理 其他信息:基础连接已关闭:发送时发生意外错误


你能帮我解决这个问题吗。medathi@gmail.com“

如果在运行高度信任的应用程序/加载项时遇到401未经授权的错误

请尝试以下步骤: 使用PowerShell cmdlet获取服务器场中所有TrustedSecurityTokenIssuer的列表 Get-SPTrustedSecurityTokenIssuer |选择名称,RegisteredIssuerName | fl

这显示了所有注册安全令牌发行者的名称、注册发行者名称。我有五个。 第一个00000005-0000-0000-c000-000000000000用于工作流。 请注意列表的其余部分,正确的令牌颁发者应采用以下格式issuerID@Realm如果您的注册中缺少RegisteredIssuerName的issuerID或Realm部分,您可以看到401错误。 对于我们来说,它是29b0ebdd-791b-41c3-b1f7-a4152a1b7a8d@8165b002-8510-4d2d-b0f7-67b0a716a3f6.“@”之前的部分是我们的“issuerID”,之后是“领域”(参考上面的屏幕截图)。 域对于您手动注册的任何颁发者都应该相同,并且应该与您的服务器场ID相同(使用以下cmdlet查找): 获取SPFarm |选择Id

您可以使用下面的cmdlet验证域

    $spurl ="http://sp/sites/DevCenter" 
    $spsite = Get-SPSite $spurl 
    $realm = Get-SPAuthenticationRealm -ServiceContext $spsite 
    Write $realm
如果您看到一个令牌颁发者的格式不正确,这就是杀手,您必须将其删除(但不要为工作流删除该令牌)。您可以使用以下PS删除任何SPTrustedSecurityTokenIssuer。请确保提供上面找到的正确RegisteredIssuerName

    Get-SPTrustedSecurityTokenIssuer | ?{$_.RegisteredIssuerName -eq "29b0ebdd-791b-41c3-b1f7-a4152a1b7a8d@8165b002-8510-4d2d-b0f7-67b0a716a3f6"} | Remove-SPTrustedSecurityTokenIssuer 
您还应仔细检查应用程序IIS服务器上的私钥(即.PFX文件)是否使用了正确的公钥部分(即.CER文件)。再次验证此步骤始终是值得的。 然后确保RegisteredIssuerName中的issuerID(在“@”符号之前)与web.config中的值匹配。打开应用程序web项目的web.config文件

    <appSettings>
<add key="ClientId" value="xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx" />
<add key="ClientSigningCertificatePath" value="C:\Certificate\xxxxx.pfx" />
<add key="ClientSigningCertificatePassword" value="xxxxxx" />
<!--<add key="IssuerId" value="dd278404-6abc-4eb2-a33a-6bc1aa67a136" /> Old Incorrect ID-->
<add key="IssuerId" value="d250d0bc-d44e-4d8b-9e36-567817943628" />
    </appSettings>

同时导航到“站点应用程序权限”页面,您将看到列出的所有应用程序标识符。请注意,您的应用程序标识符的结构如下ClientID@Realm.验证web.config中的clientId(上述步骤)。; 形象

接下来,使用 获取SPTrustedSecurityTokenIssuer

查看您的颁发者的证书指纹,并将其与您在PowerShell中使用的证书指纹进行比较