Asp.net mvc 3 使用客户端库时服务堆栈中出现序列化错误
我有一个ServiceStack REST服务(PUT和POST),我已经用fiddler测试过,如果没有引发错误,我将返回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()
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});