本周,我们使用新的 SharePoint 解决方案投入生产。在暂存环境中进行了近一年的开发和测试后,这是我第一次遇到以下错误。
错误:有时它可以工作,有时它会因 404 而崩溃
我们在我们的 SharePoint 解决方案中使用 Nintex 工作流程 - 但我猜 Nintex 并不是这里的交易破坏者。在此工作流(和其他工作流)中,我们调用了托管在 SharePoint 场的 _vti_bin 中的自定义 asmx Web 服务。Web 服务中的所有内容都以提升的权限运行。工作流调用webservice时,webservice为部分用户随机返回404错误:找不到资源。这里缺少的资源是 Web 服务的 asmx 路径。
有趣的是,此错误仅在我们客户的一个用户启动工作流时发生,但如果我们的测试登录之一是工作流启动器,则不会发生此错误。该错误也仅发生在客户用户的 5 次测试运行中的 2 次。在使用我的测试登录进行测试运行时,我有时也会遇到这样的错误,但在 20 次尝试中只有 3 次。该错误发生在来自工作流的另一个 Web 服务调用中 - 与客户用户尝试时崩溃的调用不同。
环境
SharePoint 环境由两个 Web 前端和一个应用程序服务器组成。负载平衡器也在运行。所以我的猜测是环境中的一台机器配置不正确。当我与我们的测试用户一起测试时,我正在与场服务器位于同一网络中的工作站上进行测试——我直接通过远程桌面连接执行此操作,而且我的测试必须通过负载平衡器。客户的用户正在类似情况下测试工作流,但我相信他们被路由到 SharePoint 场的方式不同,因此他们可以像我在远程测试时那样进入另一个前端。
我已经尝试过的
- 直接测试 Web 服务,无需与我的测试用户进行工作流
- 直接测试 Web 服务,无需每个前端的工作流
- 检查 asmx 文件是否真的在所有机器上的所有 _vti_bin 文件夹中
结论: asmx 无处不在,我在手动调用 web 服务时从未遇到过特定于 ASP.NET 的 404。
我的怀疑
它有时会起作用,所以我想可能一个前端工作正常。当工作流在另一个(有故障的)前端运行时,问题就出现了——这可以解释为什么我的测试用户启动的工作流的行为与客户启动的不同。
还是可能是权限问题?我已经测试了从 _vti_bin 手动调用 web 服务的测试用户对 SharePoint 场完全没有权限并且能够成功调用 web 服务。或者我应该尝试使用系统帐户启动工作流程吗?
我可以尝试缩小问题范围吗?登台系统仍然可以正常工作 - 相同的版本,相同的用户,没有问题。
提前致谢,节日快乐!
干杯