Вопрос

Не могу вернуть обьект из веб-сервиса

Добрый вечер,

 

столкнулся со следующей проблемой:

при возврате из веб сервиса своего обьекта nginx выдает ошибку 502 Bad Gateway.

примерный код который не работает

 

[ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class UsrCustomConfigurationService : BaseService
    {
        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
            ResponseFormat = WebMessageFormat.Json)]
        public object checkglobal(string phone)
{
    // получаю данные...
    var res = new GlobalRequest
    {
        UsrFileStreet = UsrFileStreet,
        UsrFileDepartment = UsrFileDepartment,
        UsrFileFlat = UsrFileFlat,
        UsrFileNumberHouse = UsrFileNumberHouse,
        UsrFileSubtypeWorks = UsrFileSubtypeWorks,
        UsrPlanDate = UsrPlanDate.ToString(),
        UsrPlanTime = UsrPlanDate.ToString(),
    };
    return res;
}
 
[DataContract]
public class GlobalRequest
{
    [DataMember]
    public string Method { get; } = "GlobalRequest";
    [DataMember]
    public string UsrFileStreet { get; set; }
    [DataMember]
    public string UsrFileNumberHouse { get; set; }
    [DataMember]
    public string UsrFileFlat { get; set; }
    [DataMember]
    public string UsrFileSubtypeWorks { get; set; }
    [DataMember]
    public string UsrPlanDate { get; set; }
    [DataMember]
    public string UsrPlanTime { get; set; }
    [DataMember]
    public string UsrFileDepartment { get; set; }
}

подскажите что я пропустил?

 

спасибо!

Нравится

4 комментария
Лучший ответ

Необходимо было добавить ServiceKnownType аттрибут к методу чтоб указать новый тип данных который я хочу вернуть

 

[ServiceKnownType(typeof(GlobalRequest))]
public object checkglobal(string phone)
{

Можете добавить эту информацию в документацию? Что необходимо использовать еще один аттрибут если надо вернуть объект? Я нашел вот эту статью но в ней ничего про это нету, добавьте пожалуйста -  https://academy.creatio.com/docs/7-18/developer/back_end_development/we…

Необходимо было добавить ServiceKnownType аттрибут к методу чтоб указать новый тип данных который я хочу вернуть

 

[ServiceKnownType(typeof(GlobalRequest))]
public object checkglobal(string phone)
{

Можете добавить эту информацию в документацию? Что необходимо использовать еще один аттрибут если надо вернуть объект? Я нашел вот эту статью но в ней ничего про это нету, добавьте пожалуйста -  https://academy.creatio.com/docs/7-18/developer/back_end_development/we…

Добрый день.

Спасибо за информацию.
Мы передадим ответственной команде пожелание дополнить документацию.

VH,

А почему возвращаете object, а не конкретный тип GlobalRequest?

Попробуйте заменить object на GlobalRequest и проверить.

Добрый день,  в моем случае необходимо было вернуть разный тип данных в зависимости от значений в бд.

Показать все комментарии