c# - 为什么 WebInvoke 不允许此方法,但 WebGet 可以?

标签 c# wcf rest

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

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

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

最佳答案

编辑:现在我重读了这个问题...

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

关于c# - 为什么 WebInvoke 不允许此方法,但 WebGet 可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835155/

相关文章:

ruby-on-rails - RESTful 破坏 Rails 中的多态关联?

c# - 如何在 ASP.NET MVC4 表中执行简单的多项选择

c# - Umbraco .Net 命名空间有任何意义或组织吗?

java - 如何在 Web 服务中使用 JAXBElement<String>?

c# - IIS8 没有端点监听 net.tcp :

java - WebSphere 8.5 - 休息 - 无 Activity 事务

rest - 在 REST API 中更改用户密码

c# - 在 C# 中附加事件处理程序的两种不同方式是否存在实际差异?

c# - 将字符串转换为 DateTime Asp.Net

xml - DataContractSerializer : preserve references