Подтвердить что ты не робот

Не удалось создать образец для типа носителя "application/x-www-form-urlencoded"

Недавно я начал создавать веб-API ASP.net

По какой-то причине я продолжаю получать эту ошибку при просмотре автоматической сгенерированной справочной документации:

enter image description here

Это для метода POST

Образцы отображаются отлично для приложения /json и application/xml

Я не совсем уверен, но приложение /-x-www-form-urlencoded продолжает показывать

Я искал ошибку довольно много, но не могу найти, что может быть причиной этого

Я действительно ценю любую помощь, которая может быть предоставлена, также, пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.

4b9b3361

Ответ 1

Это ожидаемое поведение. Генерация образца HelpPage использует фактические форматирующие элементы, присутствующие в HttpConfiguration, для "записи" образцов объектов. FormUrlEncodedMediaTypeFormatter не может "писать" любой тип, поэтому HelpPage не может сгенерировать образцы для него. В качестве обходного пути вы можете явно предоставить образец для определенного типа (как показано в комментированном коде Areas\HelpPage\App_Start\HelpPageConfig.cs).

config.SetSampleForType("[0]=foo&[1]=bar", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(IEnumerable<string>));

Ответ 2

Ответ помог мне, но мне стало скучно писать пример для каждого типа, о котором система не знала... что я в итоге сделал, это

Type[] types = { typeof(MyType), typeof(AnotherType), *add more here* };

foreach(Type t in types)
{
    List<string> propExample = new List<string>();
    foreach(var p in t.GetProperties())
    {
        propExample.Add(p.Name + "=value");
    }

    config.SetSampleForType(string.Join("&", propExample), new MediaTypeHeaderValue("application/x-www-form-urlencoded"), t);            
}

Кто-то может стать умным и расширить его, чтобы он помещал значения по умолчанию в зависимости от типа свойства, но этого было достаточно для моих целей.