gpt4 book ai didi

sharepoint-2013 - Word Automation Service BatchGetSyncJobStatus 在请求安全 token 时失败

转载 作者:行者123 更新时间:2023-12-04 19:43:46 24 4
gpt4 key购买 nike

我正在运行 SharePoint 2013 内部部署服务器,在该服务器上部署了一个简单的 WCF 服务作为场解决方案。该服务接受包含单个 MS Word 文档作为有效负载的简单 Http 发布请求,并返回这些转换为 PDF 的文件。
匿名用户可以通过 Http 访问该服务。 WordAutomationService 作为 SharePoint 服务器的管理用户帐户运行。

服务类创建 Microsoft.Office.Word.Server.Conversions.SyncConverter 的新实例,并将 SharePoint 正在运行的 WordAutomationService 的代理传递给构造函数(以及一些 ConversionJobSettings)。最后,它使用输入流(Word 文档)和输出流(将包含 WordAutomationService 生成的结果 PDF 文档的 Web 响应)调用 SyncConverter 上的 Convert 方法。

在创建 SyncConverter 时,我没有设置 UserToken 属性,因为对服务的访问是由匿名用户进行的。根据这里的评论https://msdn.microsoft.com/en-us/library/microsoft.office.word.server.conversions.syncconverter.usertoken.aspx这似乎没问题:

The default value for this property is a null reference (Nothing in Visual Basic), which is anonymous.



此设置适用于包含几页的小型 Word 文档,并返回预期的 PDF 文件。但是一旦 WordAutomationService 在 SharePoint 上的执行时间超过某个时间阈值(大约 5 秒),该服务就会失败,因为它永远不会返回(这会导致客户端读取超时)。
根据日志,其原因似乎是一段时间后同步转换作业将工作移至后台进程:

Sync Stream job conversion takes too long. Don't wait anymore. Check its status later



然后,它通过调用 ConversionServiceApplicationProxy.BatchGetSyncJobStatus 定期轮询此作业的状态。不幸的是,这个调用失败了,因为它在内部试图创建一个新的 channel 来与这个进程对话,并为此要求一个安全 token 。但是 SecurityTokenService 无法完成 token 请求并引发异常:
An unhandled exception has occurred. The security token request cannot be completed. System.InvalidOperationException: The security token request cannot be completed.    
at Microsoft.SharePoint.SPSecurityContext.SecurityTokenForServiceContext(Uri contextUri)
at Microsoft.SharePoint.SPChannelFactoryOperations.InternalCreateChannelActingAsLoggedOnUser[TChannel](ChannelFactory`1 factory, EndpointAddress address, Uri via)
at Microsoft.Office.ConversionServices.Service.ConfigChannelFactory`1.CreateChannel(EndpointAddress address)
at Microsoft.Office.ConversionServices.Service.ConversionServiceApplicationProxy.GetChannel(Uri uri)
at Microsoft.Office.ConversionServices.Service.ConversionServiceApplicationProxy.ExecuteOnChannel(Uri endpointAddress, Action`1 action)
at Microsoft.Office.ConversionServices.Service.ConversionServiceApplicationProxy.BatchGetSyncJobStatus(ICollection`1 ucids, Uri endpointAddress)
at Microsoft.Office.ConversionServices.Service.BatchGetStatusPollingThread.Run()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart() StackTrace:
at onetnative.dll: (sig=37460b31-4453-4365-92f5-3a11c267be48|2|onetnative.pdb, offset=28F56) at onetnative.dll: (offset=15735)

我现在不知如何摆脱 token 问题,以便系统可以创建必要的 channel 来轮询转换作业状态。任何帮助都受到高度赞赏。谢谢!

(我无法发布完整日志,因为它注册为垃圾邮件)

最佳答案

我发现,如果您要在域 Controller 上安装 SharePoint 2013(Microsoft 称这种拓扑仅适用于开发而不适用于生产),则 IIS (IUSR) 中的默认匿名用户将无法可靠地工作,并且任何通过 IIS 站点访问的 WCF 解决方案,该站点将匿名访问配置为使用 IUSR帐户尝试访问安全 token 服务时将失败。

在这种情况下,最方便的解决方案是重新配置 IIS 以使用另一个匿名身份,即与应用程序池相关联的身份。

例如,如果您的网站名为 NameOfSite ,您可以在提升的 PowerShell 中运行它:

Set-WebConfigurationProperty `
-Filter /system.WebServer/security/authentication/AnonymousAuthentication `
-Name username `
-Value "" `
-location "NameOfSite"

这解决了当前的问题,即 SecurityTokenForServiceContext失败。但是,如果您已经在 Windows 2012 R2 上安装了 SharePoint 2013 作为域 Controller ,那么它还没有结束: WordServerWorker实际上不会以这种配置启动。

但是,我也可以确认,如果您要在独立服务器上安装 SharePoint 2013(在无人参与的配置文件中具有 <Setting Id="SERVERROLE" Value="SINGLESERVER"/> 角色),那么整个解决方案将端到端地工作,并且 WordServerWorker 将真正正确启动。

以前,对此最相关(和未回答)的问题必须是这篇 MSDN 帖子, “The security token request cannot be completed” .我会假设在这种情况下,该服务仅处于元稳定状态,并且其中一个 IIS 工作人员之前将在本地测试期间通过 NTLM 获得凭据。

关于sharepoint-2013 - Word Automation Service BatchGetSyncJobStatus 在请求安全 token 时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37192464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com