在 RESTful WCF 服务中将类作为参数传递
在我的 RESTful WCF Serice 中,我需要传递一个类作为 URITemplate 的参数。 我能够传递一个或多个字符串作为参数。 但我有很多字段要传递给 WCF 服务。 所以我创建了一个类并将所有字段添加为属性,然后 我想将此类作为 URITemplate 的一个参数传递。 当我尝试将类传递给 URITemplate 时,出现错误 “路径段必须具有字符串类型”。它不接受类作为参数。 知道如何将类作为参数传递。 这是我的代码(inputData 是类)
[OperationContract]
[WebGet(UriTemplate = "/InsertData/{param1}")]
string saveData(inputData param1);
In my RESTful WCF Serice I need to pass a class as a parameter for URITemplate.
I was able to pass a string or multiple strings as parameters.
But I have a lot of fields are there to pass to WCF Service.
So I have created a class and added all the fields as properties and then
I want to pass this class as one paramenter to the URITemplate.
When I am trying to pass class to the URITemplate I am getting error
"Path segment must have type string". Its not accepting class as a parameter.
Any idea how to pass class as a parameter.
Here is my code (inputData is class)
[OperationContract]
[WebGet(UriTemplate = "/InsertData/{param1}")]
string saveData(inputData param1);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上,您可以在 GET 请求中传递复杂类型(类),但您需要通过 QueryStringConverter“教导”WCF 如何使用它。但是,您通常不应该这样做,尤其是在会更改服务中某些内容的方法中(GET 应该用于只读操作)。
下面的代码显示了在 GET(使用自定义 QueryStringConverter)和 POST(它应该完成的方式)中传递复杂类型。
You actually can pass a complex type (class) in a GET request, but you need to "teach" WCF how to use it, via a QueryStringConverter. However, you usually shouldn't do that, especially in a method which will change something in the service (GET should be for read-only operations).
The code below shows both passing a complex type in a GET (with a custom QueryStringConverter) and POST (the way it's supposed to be done).
只能通过 POST 或 PUT 请求 (
WebInvoke
) 传递类(数据协定)。 GET 请求仅允许简单类型,其中每个类型都必须是要映射到方法中的参数的UriTemplate
的一部分。Passing a class (data contract) is only possible with POST or PUT request (
WebInvoke
). GET request allows only simple types where each must be part ofUriTemplate
to be mapped to parameter in the method.