0

我正在使用以下方法提供 RESTful 服务:

[WebInvoke] 
string GetDataFromStringAsString(string xmlString); 

我的客户对该方法的调用如下:

var client = new RestClient(); 
client.BaseUrl = serviceBaseUrl; 
var request = new RestRequest(method){RequestFormat = DataFormat.Xml}; 
request.Resource = resourceUrl; 
request.AddParameter("text/xml", requestBody, 
ParameterType.RequestBody); 
var response = client.Execute(request); 

让我们取一个字符串作为“Hello World”发布。

现在我发布到上述方法的字符串给了我一个 400 Bad 请求。为了让它工作,我必须将上面的字符串包装在一个元素中,如下所示:

<string xmlns="http://schemas.microsoft.com/2003/10/ 
Serialization/">Hello World</string> 

现在,当我发布上述字符串时,我会从服务器收到成功响应。

为什么我必须手动包装字符串才能使其工作。有没有一种方法可以在不手动执行上述操作的情况下发布字符串。

4

1 回答 1

0

我知道的唯一其他方法是使用流作为您的输入参数。例如

[WebInvoke] 
string GetDataFromStringAsString(stream xmlString);

.Net 4 WCF REST 的问题在于,从根本上说,WCF 只知道如何传递两种类型的信息,XML 或字节流。就个人而言,我会使用 WCF Web API 而不是标准的 WCF REST 库,因为您将遇到更多此类问题。

于 2011-10-28T11:11:16.340 回答