WebInvoke方法= *

时间:2015-03-17 21:04:21

标签: c# asp.net asp.net-web-api

我目前正在开发一个项目,其中前一位开发人员使用*作为WebInvoke的方法。

[OperationContract]
[WebInvoke(Method = "*", UriTemplate = "/Path", ResponseFormat = WebMessageFormat.Json)]
void SetPath(PathInfo pathInfo);

我想知道*是什么 - 如果有的话。我期待GET,PUT,POST等......不是明星。最初我在考虑默认(POST),但如果它与默认值相同,则没有理由使用*。

MSDN似乎没有解决它(MSDN WebInvokeAttribute.Method),但他们并没有真正解决除POST之外的任何方法,这是默认的。

这篇文章(Implementing Method)似乎表明*应该与OPTIONS方法一起用作UriTemplate。所以,我只想弄清楚他是不正确的,或者他的代码是否有效,在哪种情况下我想知道它的含义。

2 个答案:

答案 0 :(得分:1)

我反编译了使用System.ServiceModel.Description.WebHttpBehavior的{​​{1}},您可以看到这只是一个匹配所有内容的通配符操作。

WebInvoke

这是抓住所有行为

答案 1 :(得分:0)

使用WebInvoke(method =“”...是从浏览器支持CORS请求(Preflight,method ='OPTIONS')的方法。在您的服务方法上使用''将路由CORS预检请求进入您的服务方法(除了get / post / put等)并且可以让您处理预检。否则,您的方法将不会在预检请求上被调用,并且预检将失败(在浏览器中)