2013-04-04 29 views
2

我正在使用wcf Web服務作爲backbone.js應用程序的持久層。如何覆蓋wcf服務合同中的方法以允許使用不同的Web方法?

[OperationContract] 
    [WebGet] 
    public IEnumerable<AnalysisParameterSet> AnalysisParameters() 
    { 
    // implementation 
    } 

    [OperationContract] 
    [WebInvoke(Method = "POST")] 
    public void AnalysisParameters(IEnumerable<AnalysisParameterSet> parameterSets) 
    { 
    // implementation 
    } 

我想在服務上創建兩個同名的方法,但簽名不同,一個用於GET,另一個用於POST。

然而wcf抱怨有兩種方法具有相同的名稱。我知道我可以使用OperationContract的name屬性來區分它們。這並不理想,因爲骨幹喜歡用於共享相同名稱的方法。

我可以在GET和POST中使用相同的方法名嗎?

如果我不能在WCF中做到這一點。我將如何修改backbone.js,爲post和Get使用不同的方法。

+0

WCF確實不支持重載僅僅因簽名而不同的方法。您必須創建兩個不同名稱的獨特方法。 – 2013-04-04 04:55:32

+0

「*這不太理想,因爲骨幹更喜歡共享相同名稱的方法。*」您能否詳細說明?由於我不知道WCF,你的服務器呼叫是如何路由的? (服務器如何知道要執行的功能/方法?) – Loamhoof 2013-04-04 08:49:45

回答

2

我相信你想要的東西是一樣的東西:

[OperationContract] 
[WebGet(UriTemplate = "/AnalysisParameters")] 
public IEnumerable<AnalysisParameterSet> GetAnalysisParameters() 
{ 
// implementation 
} 

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/AnalysisParameters")] 
public void PostAnalysisParameters(IEnumerable<AnalysisParameterSet> parameterSets) 
{ 
// implementation 
} 

根據HTTP方法(POST/GET),一個或另一個函數將被調用。

相關問題