2013-01-07 55 views
1

我一直在嘗試一個相當簡單的ServiceStack服務,並開始得到一個System.InvalidOperationException(「序列包含一個以上的匹配元件」)訪問元數據URL時(/ XML /元數據?OP =富,/ JSON /元數據?op = Foo等)。爲什麼ServiceStack拋出「Sequence包含多個匹配元素」?

的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和服務,嘗試找出這一點。這似乎是即將從ProcessOperations在ServiceStack的BaseMetadataHandler.cs調用,具體如下:

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

我只是不知道爲什麼這裏會有重複的操作(多個具有相同的名稱)。有任何想法嗎?

+2

我不能用v3.9.33和您提供的類來重新創建它。 – jeffgabhart

+0

我在3.9.32;讓我升級,看看它是否有所作爲。 –

回答

2

這似乎已經與ServiceStack之前33年9月3日的問題。一旦升級,問題就消失了。

相關問題