2012-06-04 2 views
1

У меня есть служба ServiceStack REST (PUT и POST), который я испытал с стелькой, и если не будут подняты без ошибок я возвращаюсьошибка Сериализации в стеке службы при использовании клиентской библиотеки

new HttpResult(HttpStatusCode.OK); 

Сейчас я тестирую то же самое REST службы с клиентом стека службы, у меня есть:

var client = new XmlServiceClient("url")); 
client.Post<ChangeServerLicenseDto>("", new ChangeServerLicenseDto() 
     {ServerName = model.ServerName}); 

и я получаю исключение на службе REST, когда я делаю

return new HttpResult(HttpStatusCode.OK) 

и ошибка поднятый является:

 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).

Мой DataContract для RestService является:

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

ответ

1

Конвенция сигнализации успешный ответ должен возвращать пустой ответ DTO (который по умолчанию возвращает 200 OK). Также Send<TResponse>(...) делает POST, так что если вы не хотите включать URL в запросе, используйте Send, который будет POST запрос на automatic pre-defined routes:

var client = new XmlServiceClient("url")); 
client.Send<ChangeServerLicenseDtoResponse>(
    new ChangeServerLicenseDto {ServerName = model.ServerName}); 

В противном случае, если вы все еще хотите использовать .Post<T>(...) включают URL-адрес настраиваемого маршрута, на котором установлены ваши службы.

Примечание: Мне обычно не нравятся суффиксы Dto на DTO, которые являются наиболее важными API в вашем сервисе - я объясняю в bit more detail why here.

+0

Спасибо, в моей спешке, чтобы получить эту работу, я не читал первый общий параметр - это тип ответа. Теперь я возвращаю пустой DTO (SuccessCommandResponse), поскольку я не ожидаю, что мои сообщения и будут командами, которые не возвращают данные. Еще раз спасибо. –

Смежные вопросы