我目前正在开发一个项目,其中前一位开发人员使用*作为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。所以,我只想弄清楚他是不正确的,或者他的代码是否有效,在哪种情况下我想知道它的含义。
答案 0 :(得分:1)
我反编译了使用System.ServiceModel.Description.WebHttpBehavior
的{{1}},您可以看到这只是一个匹配所有内容的通配符操作。
WebInvoke
这是抓住所有行为
答案 1 :(得分:0)
使用WebInvoke(method =“”...是从浏览器支持CORS请求(Preflight,method ='OPTIONS')的方法。在您的服务方法上使用''将路由CORS预检请求进入您的服务方法(除了get / post / put等)并且可以让您处理预检。否则,您的方法将不会在预检请求上被调用,并且预检将失败(在浏览器中)