【问题标题】:Calling an asmx webservice from SharePoint workflow: The resource cannot be found从 SharePoint 工作流调用 asmx Web 服务:找不到资源
【发布时间】:2012-12-23 14:05:13
【问题描述】:

本周我们使用新的 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 服务。还是应该尝试使用系统帐户启动工作流程?

我有什么办法可以缩小问题的范围吗?暂存系统仍然可以正常工作 - 相同的版本,相同的用户,没有问题。

提前致谢,节日快乐!

干杯

【问题讨论】:

    标签: web-services sharepoint workflow asmx


    【解决方案1】:

    问题隔离:当您在没有工作流的情况下测试 asmx 时,您使用的是测试用户帐户还是客户用户帐户?这里的关键是将问题隔离到 1.网络服务 2. WFE 尝试服务请求 3. 调用 Web 服务的客户端应用程序,即工作流

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

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

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


    量子位

    【讨论】:

    • 测试用户的权限比客户的用户还要多。客户的用户在暂存环境中是相同的,并且在那里工作正常。我们测试的客户用户之一甚至是网站集管理员。 AD 的每个经过身份验证的用户都具有网站集的读取权限(NT AUTHORITY/经过身份验证的用户)。我还与测试用户在两个前端进行了测试 - 在前端进行测试时,lmhosts 文件将 SharePoint url 重定向到本地主机而不是负载均衡器......
    【解决方案2】:

    为什么不打开 Fiddler 并检查它尝试调用 web 服务的方式、时间和地点。

    我想它会给你完整的画面。

    如果您的提琴手日志不起作用,也可以发布它

    【讨论】:

    • 从 SharePoint 前端之一调用 Web 服务,而不是从用户的浏览器调用。
    【解决方案3】:

    今天解决了问题。

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

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      相关资源
      最近更新 更多