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

时间:2015-05-09 12:29:28

标签: sharepoint

我是SharePoint povider托管应用的新手。我使用此链接“http://www.sharepointnadeem.com/2014/02/sharepoint-2013-provider-hosted-app.html”在我的本地系统中进行配置但是当我点击f5时,我得到了这个问题 “System.dll中出现'System.Net.WebException'类型的例外,但未在用户代码中处理 附加信息:基础连接已关闭:发送时发生意外错误。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

您可以使用以下cmdlet

验证Realm
    $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中的值匹配。打开App的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(上一步)。 图像

接下来,使用         Get-SPTrustedSecurityTokenIssuer

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