2013-04-17 61 views
1

當試圖執行一個POST請求Delete(SourceInfo sourceInfo)執行,而不是Post(SourceInfo sourceInfo),如果我刪除Delete(SourceInfo sourceInfo)然後Put(SourceInfo sourceInfo)正在執行POST請求時執行。我很確定我做錯了什麼,但我無法弄清楚它是什麼。ServiceStack擊中了錯誤的HTTP動詞

使用IPlugin接口請求路由。

public void Register(IAppHost appHost) 
{ 
    appHost.Routes.Add<SourceInfo>("/sources", "GET,POST,PUT"); 
    appHost.Routes.Add<SourceInfo>("/sources/{Name}", "GET,DELETE"); 
} 

服務看起來是這樣的

public class SourceService : ServiceStack.ServiceInterface.Service 
{  
    public SourceInfoResponse Get(SourceInfo sourceInfo) 
    { ... } 

    public bool Post(SourceInfo source) 
    { ... } 

    public bool Put(SourceInfo source) 
    { ... } 

    public bool Delete(SourceInfo source) 
    { ... } 
} 

我看着新的API設計此路由說明:https://github.com/ServiceStack/ServiceStack/wiki/New-API,但不像這適用於這種情況。

+0

你用什麼客戶端/工具(Fiddler,ServiceStack客戶端,ajax post等)來提出請求?此示例https://gist.github.com/paaschpa/5405028似乎使用Fiddler來POST到本地主機/源 – paaschpa

+0

我正在使用ServiceStack客戶端和[郵遞員 - REST客戶端](https://chrome.google.com /網站商鋪/細節/郵差靜止的客戶端/ fdmmgilgnpjigdojojpjoooidkmcomcm?utm_source =鉻-NTP-圖標) –

回答

1

所以我想通了,事實證明,返回bool不起作用。當我改變返回類型到object它立即工作。

這樣

public class SourceService : ServiceStack.ServiceInterface.Service 
{  
    public SourceInfoResponse Get(SourceInfo sourceInfo) 
    { ... } 

    public object Post(SourceInfo source) 
    { ... } 

    public object Put(SourceInfo source) 
    { ... } 

    public object Delete(SourceInfo source) 
    { ... } 
} 

它也可以返回一個自定義類。