在我的WCF web服务中,我有低于OperationContract的。
[OperationContract]
[WebGet(UriTemplate = "/publisheddata/{number}/{*publication}")]
Message GetPublished(String number, String publication);
[OperationContract]
[WebGet(UriTemplate = "/unpublisheddata/{number}/{*publication}")]
Message GetUnPublished(String number, String publication);我想为上述两个OperationContract调用一个通用方法,这意味着在服务实现代码中,我将在调用UriTemplate的基础上调用存储过程,我知道我可以通过在上面的url中添加额外的属性来轻松完成,我不想让用户把它从url中放出来。
在这里,我想在UriTemplate调用的基础上编写条件,所以上面的代码如下所示:
[OperationContract]
[WebGet(UriTemplate = "/publisheddata/{number}/{*publication}")]
Message GetData(String number, String publication);
[OperationContract]
[WebGet(UriTemplate = "/unpublisheddata/{number}/{*publication}")]
Message GetData(String number, String publication);在我的服务实现中,我希望检查(如果未发布数据),然后检查GetUnPublished (如果发布了数据,则检查GetPublisheddata )
它是否有可能或建议更好的方式来实现它?
发布于 2013-12-31 07:52:36
首先,-可能-你会得到异常,因为你的方法名称。您不能使用与您相同的方法名称,但可以使用OperationContract属性"Name“
[OperationContract(Name="GetPublished")]
Message GetData(String number, String publication);
[OperationContract(Name="GetUnPublished")]
Message GetData(String number, String publication);如果您喜欢单一的方法,您可以这样修改您的方法
[OperationContract]
[WebGet(UriTemplate = "/{publicationType}/{number}/{*publication}")]
Message GetData(string publicationType, string number, string publication);在您的方法中,您检查"publicationType“参数并执行逻辑。
发布于 2013-12-31 08:12:11
如果我真的理解,您只想提供单一的访问方法。我在我的项目中使用这样的结构
[WebInvoke(Method="POST", UriTemplate ="/customers", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json), Description("Save a customer information")]
OperationResult CustomerSave(Request<Customer> customerRequest);此外,我还在WCF接口/合同中显示了两种不同的-not方法--命名为“创建”和“更新”。
在我的wcf方法(CustomerSave)中,我正在这样做
if(customerRequest.Id != Guid.Empty)
{
Update(customerRequest);
}
else
{
Create(customerRequest);
}而且我的用户看不到创建/更新方法
https://stackoverflow.com/questions/20833574
复制相似问题