如何覆盖wcf服务合同中的方法以允许不同的Web方法?

时间:2013-04-04 04:16:12

标签: wcf backbone.js

我使用wcf Web服务作为backbone.js应用程序的持久层。

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

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

我想在服务上创建两个具有相同名称但不同签名的方法,一个用于GET,一个用于POST。

然而,wcf抱怨有2个方法具有相同的名称。我知道我可以使用OperationContract的name属性来区分它们。对于共享相同名称的方法,这不是理想的主干。

我可以为GET和POST使用相同的方法名吗?

如果我不能在WCF中这样做。我将如何修改backbone.js以使用不同的方法进行发布和获取。

1 个答案:

答案 0 :(得分: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),将调用一个或另一个函数。