Как вернуть пустой JSON-объект для методов возвращаемого типа void?

Требование:

Я ищу способ вернуть пустой объект JSON (например, {}) когда тип возвращаемого значения моего метода ServiceStack void,

Обоснование:

Причина желания вернуть пустой объект JSON для void Типы связаны с тем, как jQuery обрабатывает тип контента application/json, Как обсуждено здесь, jQuery выдаст ошибку, когда 200 - OK Статус получен без содержания. Который является тем, что в настоящее время возвращается за пустоту.

Предусмотренные проблемы:

Я надеюсь, что есть простой способ сериализации void в {},

  • Если это возможно, будут ли неблагоприятные последствия для этого?
  • Повлияет ли это на клиента ServiceStack C#, когда он ожидает void?

1 ответ

Решение

Я нашел простое решение было переопределить OnAfterExecute метод в моем пользовательском ServiceStack ServiceRunner,

Если нет ответа (потому что метод вернулся void) и ContentType является application/json затем отправьте пустой объект.

public override object OnAfterExecute(IRequestContext requestContext, object response)
{
    if(response == null && requestContext.ContentType == "application/json")
        response = new {};

    return base.OnAfterExecute(requestContext, response);
}
Другие вопросы по тегам