我在 IIS 中托管工作流服务 (xamlx)。它有一些接收活动,例如 MethodA 和 MethodB。我编写了一个 MVC 应用程序作为客户端来调用这些方法。在 PageA 中,用户提交表单会调用 MethodA,工作流会转到等待 MethodB 的 Receive Activity。然后在Page B,用户提交表单会调用MethodB。但是,如果用户在 PageA 中提交,然后返回到 PageA 并再次提交相同的工作流实例,它将等待一分钟并给出超时异常:
00:01:00 后等待回复时请求通道超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。
这个错误似乎来自 WCF,而我想它会给出以下错误:
InstancePersistenceCommand 的执行被中断,因为实例键“guid”未与实例关联。这可能是因为实例或密钥已被清理,或者因为密钥无效。如果生成密钥的消息在错误的时间发送或包含不正确的相关数据,则密钥可能无效。
我有几个问题:
有没有我们可以设置的配置,以便可以捕获另一个异常,而不是等待一段时间直到可以捕获超时异常?我知道我们可以在绑定标签中设置一个较小的超时值,但这不应该是一个解决方案。
当工作流实例未处于正确状态时,是否有任何方法可以避免显示 PageA?(即使这样做了,我们还需要解决问题1,因为用户可以打开PageA并在提交前空闲一段时间)
谢谢。