【问题标题】:WCF REST API - Is Operation Contract required?WCF REST API - 是否需要操作合同?
【发布时间】:2020-10-06 09:52:20
【问题描述】:

我想知道是否需要 [OperationContract] 属性?我创建了一个新的 API 端点并忘记在方法上方指定此属性,但是,我仍然能够通过 Postman 成功访问此端点。我想知道这是否是预期的行为?我记得读过 [ServiceContract] 中的方法本质上是opt-in,所以如果没有该属性,这个端点不应该是不可访问的吗?

另外,同样的推理是否适用于 [DataContract] 属性?用于向调用者发送响应的大量类尚未使用此属性进行修饰。

【问题讨论】:

  • 如果不使用 Operation Contract,WCF 假定所有公共方法都将在服务边界上公开。如果您不使用数据协定,那么 WCF 将假定所有类型都应该以类似方式公开。这对您来说可能不是问题,但可能不希望将服务程序集中的所有内容也暴露给外界,因此存在这些声明性属性....

标签: wcf wcf-binding wcf-rest


【解决方案1】:

这与 .Net 框架有关。如果您使用 .Net Framework 3.5,则需要将 OperationContract 添加到 WCF REST API。但如果你使用.Net framework 4.0或以上版本,则可以避免添加OperationContract,因为.Netframework 4.0及更高版本的WebInvoke实现了IOperationContractAttributeProvider。

这是 .Net 框架 4.0 中的 WebInvoke。可以看到它实现了 IOperationContractAttributeProvider 接口。

这是 .Net framework 3.5 中的 WebInvoke。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多