【问题标题】:WCF - Routing IssueWCF - 路由问题
【发布时间】:2011-03-18 18:28:47
【问题描述】:

我正在开发 WCF REST 服务,在该服务中,我有两个具有相同 URITemplate 的方法。其中一个标记为 WebGet,另一个标记为使用 PUT 作为方法的 WebInvoke。

[WebGet(URITemplate="{name}")]
public Something GetSomethingNamed(string name)


[WebInvoke(Method="PUT", URITemplate="{name}")]
public Something AddSomethingNamed(Something somethingToAdd)

当尝试在服务中测试某些内容时,处理异常的最佳方法是尝试浏览 IE 中的 GET 方法,我收到一个错误,即 AddsomethingNamed 需要一个名为 NAME 的参数。

我对此响应感到有些困惑,因为我什至不知道它是如何进入 PUT 方法的,据我所知 Web 浏览器甚至不直接支持 PUT。

【问题讨论】:

    标签: c# wcf rest routing


    【解决方案1】:
    [WebInvoke(Method="PUT", URITemplate="{name}")] 
    public Something AddSomethingNamed(Something somethingToAdd) 
    

    在您提到的 URI 模板中的上述代码中,{name} 这意味着您的方法接受了另外一个参数“name”。

    所以你的方法签名应该是以下任一

    [WebInvoke(Method="PUT", URITemplate="AddSomethingNamed")] 
    public Something AddSomethingNamed(Something somethingToAdd) 
    

    [WebInvoke(Method="PUT", URITemplate="{name}")] 
    public Something AddSomethingNamed(string name, Something somethingToAdd)
    

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 2011-05-04
      • 2017-03-26
      • 1970-01-01
      • 2018-09-30
      • 2020-10-17
      • 2016-11-09
      • 1970-01-01
      • 2011-09-16
      相关资源
      最近更新 更多