我也在探索Azure Service Bus上可能的用户错误。以下是我的一些发现。用户错误通常是由于客户端应用程序中的错误而发生的,例如
- InvalidOperationException ,服务器或服务中不允许所请求的用户操作。例如,如果在ReceiveAndDelete模式下接收到消息,则Complete()会生成InvalidOperationException
- OperationCanceledException ,尝试对已关闭,中止或处置的对象调用操作。在极少数情况下,周围交易已被处理。
- UnauthorizedAccessException ,TokenProvider对象无法获取令牌,令牌无效或令牌不包含执行操作所需的声明
- ArgumentException / ArgumentNullException / ArgumentOutOfRangeException ,如果提供给该方法的一个或多个参数无效。提供给NamespaceManager或Create的URI包含路径段。提供给NamespaceManager或Create的URI方案无效。属性值大于32KB。
- SessionLockLostException ,与此会话关联的锁丢失了
- MessageLockLostException ,与邮件关联的锁定令牌已过期,或者未找到锁定令牌
- MessageNotFoundException ,尝试接收具有特定序列号的消息。找不到此消息
- MessagingEntityNotFoundException ,与该操作关联的实体不存在或已被删除
- MessagingCommunicationException ,客户端无法与服务总线建立连接
- SessionLockLostException ,与此会话关联的锁丢失了
- MessagingException ,在以下情况下可能会引发的通用消息传递异常:尝试使用属于不同实体类型(例如,主题)的名称或路径来创建QueueClient。 )。试图发送大于256KB的消息。服务器或服务在处理请求期间遇到错误。这通常是短暂的异常
- MessagingEntityAlreadyExistsException ,尝试创建一个名称已被该服务命名空间中的另一个实体使用的实体
- QuotaExceededException ,消息传递实体已达到其最大允许大小,或者已超过与名称空间的最大连接数
- RuleActionException ,如果您尝试创建无效的规则操作,Service Bus将返回此异常。如果在处理该消息的规则操作时发生错误,Service Bus会将此异常附加到一条带字母的消息上
- FilterException ,如果您尝试创建无效的过滤器,Service Bus将返回此异常。如果在处理该消息的筛选器时发生错误,Service Bus会将此异常附加到一条带字母的消息上
- SessionCannotBeLockedException ,尝试接受具有特定会话ID的会话,但该会话当前已被另一个客户端锁定
- TransactionSizeExceededException ,事务中有太多操作
- MessagingEntityDisabledException ,请求对已禁用实体执行运行时操作
- NoMatchingSubscriptionException ,如果您向启用了预过滤且没有过滤条件匹配的主题发送消息,则Service Bus将返回此异常
- MessageSizeExceededException ,消息有效负载超过了256 KB的限制。请注意,最大邮件大小为256 KB,其中可能包括系统属性和任何.NET开销
- TransactionException ,周围的交易(Transaction.Current)无效。它可能已完成或中止了
- TransactionInDoubtException ,尝试对有疑问的交易执行操作,或者尝试提交该交易而使该交易有疑问
我从MSDN文档中收集了详尽的异常列表,并过滤了该列表以获取可能在Azure ServiceBus上出现的用户错误