从SharePoint工作流调用asmx Web服务:找不到该资源

时间:2012-12-23 14:05:13

标签: web-services sharepoint workflow asmx

本周我们使用新的SharePoint解决方案进行了生产。经过近一年的开发和测试,这是我第一次遇到以下错误。

错误:有时会有效,有时会因404

而崩溃

我们在SharePoint解决方案中使用Nintex工作流程 - 但我想Nintex不是此处的交易破坏者。在此工作流程(和其他工作流程)中,我们调用了一个托管在SharePoint场的_vti_bin中的自定义asmx Web服务。 Web服务中的所有内容都以提升的权限运行。当工作流调用Web服务时,Web服务会为某些用户随机返回404错误:无法找到该资源。这里缺少的资源是webservice的asmx路径。

有趣的是,只有当我们的一个客户的用户正在启动工作流时,才会出现此错误,但如果我们的某个测试登录是工作流启动器,则不会发生此错误。对于客户的用户,该错误也仅发生在5次测试运行中的2次。当我使用我的测试登录进行测试运行时,我有时会遇到这样的错误,但在20次尝试中只有3次。该错误发生在来自工作流的另一个Web服务调用中 - 与客户用户尝试时崩溃的调用不同。

环境

SharePoint环境包含两个Web前端和一个应用程序服务器。负载平衡器也在运行。所以我的猜测是环境中的其中一台机器没有正确配置。当我与我们的测试用户进行测试时,我在与服务器场服务器位于同一网络中的工作站上进行测试 - 我是通过远程桌面连接直接进行测试的,也是我的测试必须通过负载均衡器。客户的用户正在类似的情况下测试工作流程,但我相信他们会以不同的方式路由到SharePoint服务器场,以便他们像测试远程时那样进入另一个前端。

我已尝试过的内容

  • 直接测试网络服务而不使用我的测试用户的工作流程
  • 在每个前端没有工作流程的情况下直接测试Web服务
  • 检查asmx文件是否确实存在于所有计算机上的所有_vti_bin文件夹中

结论:asmx存在于任何地方,并且在手动调用Web服务时我从未体验过ASP.NET特定的404.

我的怀疑

它有时会起作用,所以我猜可能是一个前端正在完成它的工作。当工作流在另一个(错误的)前端运行时,问题就会出现 - 这可以解释为什么我的测试用户启动的工作流程与客户启动的行为不同。

或者它可能是许可问题吗?我已经测试过,从_vti_bin手动调用webservice,测试用户对SharePoint场完全没有权限,并且能够成功调用Web服务。或者我应该尝试使用系统帐户启动工作流程吗?

有什么我可以尝试缩小问题的范围吗?登台系统工作正常 - 相同的版本,相同的用户,没有问题。

先谢谢你,祝节日快乐!

干杯

3 个答案:

答案 0 :(得分:0)

问题隔离:当您在没有工作流的情况下测试asmx时,您是否使用了测试用户帐户或客户用户帐户?这里的关键是将问题隔离开来 1.网络服务 2. WFE试图满足要求 3.调用Web服务的客户端应用程序,即工作流程

权限:尝试获得测试用户匹配客户用户的权限,只是为了比较苹果和苹果。

是否存在跨域连接? 是否有任何防火墙或防病毒软件监控流量?

日志:检查IIS日志文件和事件查看器以检查有关404错误的更多详细信息。


量子位

答案 1 :(得分:0)

为什么不打开Fiddler并检查它是如何以及何时何地尝试调用webservice。

我认为它会给你完整的图片。

如果你的小提琴日志不能正常发布,也会发布

答案 2 :(得分:0)

今天解决了这个问题。

这是一个配置问题:我的客户的IT将另一个应用程序服务器添加到服务器场,并且忘记在IIS控制台中配置绑定。每次工作流在新的应用程序服务器上运行时,由于缺少绑定,它无法连接到Web服务。