This question 已经问了我在问什么,但我想对答案进行一些澄清。
答案指出 WebGet
和 WebInvoke
相似,主要区别在于 Method
参数。
但是如果 Method
参数设置为 "GET"
,它实际上在功能上是等效的,还是有其他区别?
最佳答案
它们只是标记属性,最终在功能上 100% 等效。解释这些属性的唯一方法是 WebHttpBehavior::GetWebMethod
方法,它的功能很简单:
internal static string GetWebMethod(OperationDescription od)
{
WebGetAttribute webGetAttribute = od.Behaviors.Find<WebGetAttribute>();
WebInvokeAttribute webInvokeAttribute = od.Behaviors.Find<WebInvokeAttribute>();
WebHttpBehavior.EnsureOk(webGetAttribute, webInvokeAttribute, od);
if (webGetAttribute != null)
{
return "GET";
}
if (webInvokeAttribute == null)
{
return "POST";
}
return webInvokeAttribute.Method ?? "POST";
}