2011-11-09 25 views
2

我是openRasta框架的新手。我有一個名爲Project.I資源有2種不同類型的GET要在這個資源做,因爲我需要在這兩個GETs.My配置是這樣的Openrasta的Get方法在資源處理程序中的優先順序

ResourceSpace.Has.ResourcesOfType<IList<Project>>() 
    .AtUri("/projects") 
    .And.AtUri("/miniprojects") 
    .HandledBy<ProjectHandler>() 
    .AsJsonDataContract() 
    .And.AsXmlDataContract(); 

和我的處理程序方法如下不同的信息

[HttpOperation(HttpMethod.GET, ForUriName = "/projects")] 
public OperationResult GetProjectsList() 
{ 
} 

[HttpOperation(HttpMethod.GET, ForUriName = "/miniprojects")] 
public OperationResult GetMiniProjectList() 
{ 
} 

每當我做這個資源的一些GET,不管我的網址,例如http://localhost/projectshttp://localhost/miniprojects)的第一個方法,在處理類的getXXX名被調用每次。當我在處理程序文件中更改GetXXX方法的序列時,另一個方法被調用。
所以我的問題是,Handler中的方法序列是否決定調用哪個GetXXX方法?此外,我在代碼段中提到的每個GetXXX方法的HttpOperation屬性中指定了不同的「ForUriName」,但該序列仍然佔優先。

任何人都可以幫我解決這個問題嗎?或者讓我知道我是否缺少任何東西。

在此先感謝。

回答

3

如果threre沒有辦法區分兩個URI,那麼我們並不保證任何順序。

如果你真的想以這種方式來使用URI路徑(相對於不同的資源模型),那麼你的URI需要使用一個名稱

.AtUri("/miniprojects").Named("miniprojects") 

命名位需要匹配註冊屬性

[HttpOperation(ForUriName="miniprojects")] 
+0

非常感謝解決方案。我試了一下,它的工作。 – prashant