WebInvoke 属性是否可以采用 GET 作为方法?我在微软文档中看不到任何关于此的概念。不过我已经在一些论坛示例中看到过它的使用。
原则上,使用 webInvoke 时,您不应该能够发布、放置和删除吗?相反,当使用 WebGet 时,您只能通过 HTTP 使用 GET 动词,这意味着您不能 Post、Delete 和 Put。现在 Get 操作不应该修改数据,根据 W3org,它们应该是幂等的,因此不能成为 WebInvoke 属性中的选项。有人可以指出 GET 动词在 WebInvoke 属性中的作用或存在吗,特别是在 REST 编程的上下文中。
最佳答案
WebInvoke
是包括 GET 在内的任何 HTTP 动词的通用属性。如果将其与 GET 一起使用,则必须遵循 GET 的所有限制 - 操作参数必须是映射到 URI 路径参数的简单类型。
WebGet
仅适用于 GET 动词,恕我直言,它的存在主要是为了显示 GET 和其他动词之间的区别(GET 应该是幂等的,GET 没有正文等)
.NET 中使用这些属性的最重要方法是内部 GetWebMethod
:
internal static string GetWebMethod(OperationDescription od)
{
WebGetAttribute wga = od.Behaviors.Find<WebGetAttribute>();
WebInvokeAttribute wia = od.Behaviors.Find<WebInvokeAttribute>();
EnsureOk(wga, wia, od);
if (wga != null)
{
return "GET";
}
if (wia == null)
{
return "POST";
}
return (wia.Method ?? "POST");
}
如您所见,WebInvoke
的 GET 方法已正常处理。
关于asp.net - WCF WebInvoke属性可以采用GET作为方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061251/