为什么WebInvoke不允许使用此方法,但WebGet是否可以?

时间:2010-09-30 22:02:35

标签: c# wcf rest

有人可以解释这背后的原因或它是如何运作的?如果我在下面做了一个WebInvoke,它会失败(说方法不允许,但如果我做了一个WebGet,它会通过)。我只是想明白为什么?

[OperationContract]
[WebGet(UriTemplate = "login/{username}/{password}", ResponseFormat =  
                                                        WebMessageFormat.Json)]
string Login(string username, string password);

上面的代码,只返回一个硬编码字符串。 (无条件逻辑)

1 个答案:

答案 0 :(得分:12)

编辑:现在重写一下我已经重读了这个问题......

WebInvoke允许您指定允许哪个动词,默认为POST。 WebGet要求客户端使用GET请求。在任何一种情况下,如果使用了错误的动词,你将得到“不允许使用方法”。您正在使用浏览器,因此它正在发出GET请求,因此正常的仅限POST的WebInvoke会拒绝它,而WebGet会允许它。您可以在Method="GET"属性声明中指定WebInvoke以允许GET,当然。