我尝试了以下代码:
[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/