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

Xai*_*oft 2 c# rest wcf

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

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

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

Jon*_*eet 12

编辑:有点改写现在我重读了这个问题......

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