servicestack,Asp.net Mvc 3,servicestack" /> servicestack,Asp.net Mvc 3,servicestack" />

Asp.net mvc 3 使用客户端库时服务堆栈中出现序列化错误

Asp.net mvc 3 使用客户端库时服务堆栈中出现序列化错误,asp.net-mvc-3,servicestack,Asp.net Mvc 3,servicestack,我有一个ServiceStack REST服务(PUT和POST),我已经用fiddler测试过,如果没有引发错误,我将返回 new HttpResult(HttpStatusCode.OK); 现在,我正在使用服务堆栈客户端测试相同的REST服务,我有: var client = new XmlServiceClient("url")); client.Post<ChangeServerLicenseDto>("", new ChangeServerLicenseDto()

我有一个ServiceStack REST服务(PUT和POST),我已经用fiddler测试过,如果没有引发错误,我将返回

new HttpResult(HttpStatusCode.OK); 
现在,我正在使用服务堆栈客户端测试相同的REST服务,我有:

var client = new XmlServiceClient("url"));
client.Post<ChangeServerLicenseDto>("", new ChangeServerLicenseDto()
         {ServerName = model.ServerName});
出现的错误是:

      500 (Error in line 1 position 76. Expecting element 'ChangeServerLicense'
      from namespace ''.. Encountered 'Element'  with name 'HttpStatusCode',
      namespace 'http://schemas.datacontract.org/2004/07/System.Net'.) 
我的客户机代码位于MVC操作方法(POST)中

我的RestService数据合同是:

[DataContract(Name = "ChangeServerLicense", Namespace = "")]
[RestService("url", "POST", "application/xml")]
public class ChangeServerLicenseDto
{
    [DataMember(Name = "ServerName", Order = 1)]
    public string ServerName { get; set; }
}

发送成功响应信号的惯例是返回空响应DTO(默认情况下返回200 OK)。另外,
Send(…)
会发布请求,因此如果您不想在请求中包含url,请使用
Send
,它将将请求发布到:

var-client=newxmlserviceclient(“url”);
客户,发送(
新的ChangeServerLicenseDto{ServerName=model.ServerName});
否则,如果您仍要使用
.Post(…)
,请包含安装服务的自定义路由的URL


注意:我通常不喜欢在Dto上使用
Dto
后缀,因为Dto是您服务中最重要的API—我在一篇文章中解释了发出成功响应信号的惯例是返回空响应Dto(默认情况下返回200 OK)。另外,
Send(…)
会发布请求,因此如果您不想在请求中包含url,请使用
Send
,它将将请求发布到:

var-client=newxmlserviceclient(“url”);
客户,发送(
新的ChangeServerLicenseDto{ServerName=model.ServerName});
否则,如果您仍要使用
.Post(…)
,请包含安装服务的自定义路由的URL


注意:我通常不喜欢在Dto上使用
Dto
后缀,因为Dto是您服务中最重要的API-我在a中解释了这一点。

谢谢,在我匆忙完成这项工作时,我没有读到第一个通用参数是响应类型。我现在返回一个空DTO(SuccessCommandResponse),因为我不希望我的POST和PUT是不返回数据的命令。再次感谢。谢谢,在我匆忙完成这项工作时,我没有读到第一个通用参数是响应类型。我现在返回一个空DTO(SuccessCommandResponse),因为我不希望我的POST和PUT是不返回数据的命令。再次感谢。
[DataContract(Name = "ChangeServerLicense", Namespace = "")]
[RestService("url", "POST", "application/xml")]
public class ChangeServerLicenseDto
{
    [DataMember(Name = "ServerName", Order = 1)]
    public string ServerName { get; set; }
}
var client = new XmlServiceClient("url"));
client.Send<ChangeServerLicenseDtoResponse>(
    new ChangeServerLicenseDto {ServerName = model.ServerName});