为什么ServiceStack抛出“Sequence包含多个匹配元素”?

时间:2013-01-07 15:02:27

标签: servicestack

我一直在尝试一个相当简单的ServiceStack服务,并在访问元数据URL时开始获取System.InvalidOperationException(“Sequence包含多个匹配元素”)(/ xml / metadata?op = Foo,/ json /元数据?op = Foo等)用于特定的DTO。

DTO是:

[DataContract]
[Route("/foo/{Id}", "PUT")]
public class Foo : IReturn<Foo>, IHasId
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }

    public Foo() {}
}

服务是:

public class FooService : Service
{
    private static readonly List<Foo> items = new List<Foo>
    {
        new Foo { Id = 1, Name = "Foo" },
        new Foo { Id = 2, Name = "Bar" }
    };

    public virtual object Put(Foo request)
    {
        var itemToUpdate = items.Find(p => request.Id == p.Id);

        if (itemToUpdate == null)
            throw new HttpError(System.Net.HttpStatusCode.NotFound,
                new ArgumentException(String.Format("{0} with Id {1} does not exist.", typeof(Foo).Name, request.Id)));

        itemToUpdate.PopulateWith(request);

        return request;
    }
}

我已经注释掉了所有其他DTO和服务,试图将其隔离开来。它似乎来自ServiceStack的BaseMetadataHandler.cs中的ProcessOperations调用,具体如下:

var operationType = allTypes.Single(x => x.Name == operationName);

我只是不确定为什么会有重复的操作(多个具有相同的名称)。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这似乎是3.9.33之前ServiceStack的一个问题。升级后,问题就消失了。