1

我有一个 ASP.NET Web API,它在 HTTP PUT 方法中接受 DTO,执行一些验证,然后执行 Bus.Send()sa 命令。

目前,所有消息都在配置的 MSMQ 错误队列中结束。

这是一些伪代码作为我正在使用的模型的概述......

public HttpResponseMessage Put([FromBody]EntityModel entity)
    {
        if (ModelState.IsValid)
        {
           _bus.Send(new command());
           return Request.CreateResponse(HttpStatusCode.Accepted);
        }
        else
        {
            var msg = new HttpResponseMessage(HttpStatusCode.NotModified) { ReasonPhrase = "Error text here" };
            return msg;
        }
    }

经过调查,我在 Web API 操作方法的最后一个大括号/大括号上设置了一个断点,并查看了计算机管理中的 MSMQ,可以看到消息已进入正确的队列并且看起来格式正确。

当我越过最后一个括号时,消息立即移入错误队列。断点后似乎没有其他代码运行(自定义过滤器/属性等)

我推测这与队列事务有关,并且某些原因导致该事务中止,但我无法弄清楚它是什么..

任何帮助都会很棒,谢谢,

4

1 回答 1

0

听起来消息处理程序代码中存在故障。如果消息处理失败,那么它将从输入队列中删除(您可以在其中看到它已传递)并移至错误队列。

你能确认处理没有失败吗?

于 2012-11-06T08:19:01.203 回答