Workflow Manager与SharePoint 2019连接失败技术求助
结合你给出的环境配置和错误信息,这个问题的核心是OAuth S2S元数据端点返回了非JSON内容(HTML),导致命令无法完成反序列化。下面是一步步的排查和解决方向:
你的环境背景
- 单服务器部署的SharePoint 2019场
- 3台已配置负载均衡的Workflow Manager服务器,仅启用HTTPS运行
- Workflow Manager的SSL证书包含
*.domain.com及所有3台服务器的FQDN - 所需权限已配置完成,SharePoint站点与Workflow Manager URL可双向访问
执行命令及报错详情
你运行的PowerShell命令:
Register-SPWorkflowService -SPSite "https://siteurl" -WorkflowHostUri "https://wfmurl:12290/" -Force -Verbose
抛出的错误信息:
Register-SPWorkflowService : 无法查询位于URI 'https://webappurl/_layouts/15/metadata/json/1'的OAuth S2S元数据终结点。错误详情:“反序列化类型为Microsoft.Workflow.Management.Security.OAuthS2SJsonMetadataDocument+JsonMetadataDocumentContract的对象时出错。遇到意外字符'<'。”
从服务器收到的HTTP头 - ActivityId: 6de1c881-b1ca-411d-9004-ceea397d4453. NodeId: SERVERNAME. Scope: /DEV. Client ActivityId : bdeb429f-7bb1-e0c1-d7d1-f868a175396b.
At line:1 char:1
- Register-SPWorkflowService -SPSite https://webappurl ...
- CategoryInfo : InvalidData: (Microsoft.Share...WorkflowService:RegisterSPWorkflowService) [Register-SPWorkflowService], InvalidRequestException
- FullyQualifiedErrorId : Microsoft.SharePoint.WorkflowServices.PowerShell.RegisterSPWorkflowService
具体解决步骤
1. 检查元数据端点的返回内容
错误里的<字符基本说明端点返回的是HTML(比如登录页、错误页面),而非预期的JSON。你可以直接在浏览器中访问https://webappurl/_layouts/15/metadata/json/1:
- 如果跳转到登录页:确保使用场管理员账户访问,且该账户对目标站点拥有完全控制权限;同时检查Web应用程序的身份验证设置,确认没有反向代理、ADFS等服务拦截该端点请求并强制跳转登录。
- 如果返回500错误页面:打开SharePoint的ULS日志,用错误中的
Client ActivityId : bdeb429f-7bb1-e0c1-d7d1-f868a175396b搜索定位具体服务器端错误,常见原因包括元数据服务未启动、Web.config配置异常等。
2. 验证SSL证书的信任链
虽然你的证书包含正确域名,但要确保SharePoint服务器信任Workflow Manager的证书:
- 将Workflow Manager的根证书导入到SharePoint服务器的本地计算机 → 受信任根证书颁发机构存储中。
- 在Workflow Manager服务器上运行
Get-WFServer命令,确认证书状态正常,没有过期或吊销的情况。
3. 排查负载均衡器的配置问题
由于使用了负载均衡,先排除负载均衡的影响:
- 尝试直接使用单台Workflow Manager服务器的FQDN执行命令,比如
-WorkflowHostUri "https://wfm-server1.domain.com:12290/",如果能成功注册,说明负载均衡器的配置存在问题。 - 检查负载均衡器是否开启了SSL卸载,如果开启了,要么禁用卸载保持端到端HTTPS,要么在Workflow Manager上配置对应的HTTP端点(但你当前仅启用HTTPS,优先考虑前者)。
4. 检查SharePoint的OAuth配置
确认SharePoint的OAuth服务状态正常:
- 先清理旧的信任关系(如果存在):运行
Unregister-SPWorkflowService -SPSite "https://siteurl" -Force,然后重新执行注册命令。 - 运行
Get-SPSecurityTokenServiceConfig命令,确认AllowOAuthOverHttp为False(因为你使用的是HTTPS),其他OAuth相关配置符合HTTPS环境要求。
5. 验证服务器间的HTTPS请求连通性
虽然你提到双向可达,但仍需确认具体请求状态:
- 在SharePoint服务器上运行
Invoke-WebRequest -Uri "https://webappurl/_layouts/15/metadata/json/1" -UseDefaultCredentials,查看返回内容和状态码,确认能获取到正确的JSON数据。 - 同样运行
Invoke-WebRequest -Uri "https://wfmurl:12290/" -UseDefaultCredentials,检查Workflow Manager端点是否正常响应。
内容的提问来源于stack exchange,提问作者tudor

