【发布时间】:2010-07-27 20:50:34
【问题描述】:
我有 2 个 WCF 服务,它们实现了来自单独库的接口。接口的方法未使用 WebGet 或 WebInvoke 属性进行标记。但是,一项服务将处理 POST 请求,而另一项服务将处理 GET 请求。所以它有点像这样:
服务 1:处理所有 POST 请求。请求是 JSON,响应是 JSON。从接口继承和实现的所有方法都标有WebInvoke
服务 2:处理所有 GET 请求。请求是 JSON,响应是 JSONP。从接口继承和实现的所有方法都用 WebGet 标记
到目前为止一切顺利。现在解雇这些家伙 aaaaaand splat。这是我得到的错误:
Operation 'SomeMethod' in contract 'IServiceContract' has both WebGetAttribute and WebInvokeAttribute; only one can be present.
hmmmm,如果实际界面已经标记了一个或两个属性,这将是有意义的,但它不是。
double hmmmmmm:如果您通过 VS 创建默认 WCF 服务并添加第二个服务并标记所有方法实现,则此设置非常有效。
triple hmmmmmmm:如果我只从 JSONP 服务中删除 WebGet 属性(将 WebInvoke 保留在 JSON 服务上),它就可以工作。如果我从 JSON 服务中删除 WebInvoke 属性也是如此。
编辑:另一件奇怪的事情,只有一个服务抛出此错误(我的 JSONP/GET 服务),而常规 JSON/POST 服务正常工作。
【问题讨论】:
-
您能发布您的界面的完整代码吗?可能还有你的实现?
-
不幸的是,我想通了....是的,经过近半天的代码查看后,我发现如果我删除对库的引用(包含接口),然后重新添加它,一切正常。