c# - 我可以在 UriTemplate 中使用对象吗?

标签 c# wcf rest

我尝试了以下代码:

 [OperationContract]
 [WebInvoke(UriTemplate="/Users/Register/{user}")]
 void Register(User user);

但是当我尝试运行它时,它告诉我 UriTemplate 必须只包含字符串。如果我需要将一个对象传递到我的方法,在这种情况下,将一个用户对象传递到我的 Register 方法,该怎么办。

如果我将 WebInvoke 属性更改为:

[WebInvoke(UriTemplate="/Users/Register/")]

当我尝试浏览到 http://localhost:8000/Users/Register 时,浏览器显示错误 Method not allow例如

最佳答案

您仅限于 UriTemplate 中的字符串。您可以使用多个参数来传递多个字符串,但不能使用复杂类型。如果你想传递一个复杂类型,那么它不能在 URI 中的任何地方,而是在 POST/PUT 请求的主体中。 GET 请求不采用消息正文。所以你上面的代码可以改成这样:

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate="/Users/Register")]
void Register(User user);

在您传递用户对象的地方,不是通过 Uri,而是作为 POST 请求的一部分。

关于c# - 我可以在 UriTemplate 中使用对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3739428/

相关文章:

c# - 暴露的端口 0 未映射。测试容器 C#

c# - 重构大泥球;不确定这里是否正确使用了静态。建议?

rest - Strongloop-Loopback 查询字符串参数

wcf - 从 http 到 Https 服务调用

java - Jersey Client 能否自动将 POJO 实体编码为 application/x-www-form-urlencoded,还是我需要编写自定义 MessageBodyWriter?

rest - 在 RESTful CRUD API 中处理 ID

c# - 根据数据网格中的行选择打开表单

c# - 属性/方法/成员是否有等效于 typeof 的 C#?

wcf - 使用 ADFS2 作为 IP 使用 WIF 保护后端 WCF 服务

c# - 无法建立连接,因为目标机器主动拒绝 127.0.0.1 :3446