2013-02-19 2 views
1

Я использую ServiceStack и есть маршрут, как это:службы стека общий путь с чванством

[Route("/hello/{Name*}")] 

Так что ничего подобного /hello/some/parameters должен быть обработан.
Swagger использует следующий URL-адрес: /hello/{Name*}, и независимо от того, какое значение я предоставляю для параметра Name, я получаю следующее сообщение, когда я нажимаю кнопку «Try it out»: потенциально опасное значение клиента Request.Path, полученное от клиента (*) ,

Обратите внимание, я использую следующий атрибут ApiMember:

[ApiMember(Name = "Params", DataType = "string", ParameterType = "path" , IsRequired = true)]

и еще какой-то ввод текста я это перекрываться с * и у меня есть ошибки, как описано выше.

Есть ли обходной путь для этого?

ответ

3

Во-первых, ошибка возникает из-за того, что вызов Swagger использует значение по умолчанию {Name *} в пути/запросе. (*) не допускается на пути к URL-адресу. Используя правильные атрибуты в вашем классе ServiceStack, вы сможете получить текстовое поле, чтобы ввести свое значение в пользовательский интерфейс Swagger.

Кое-что как показано ниже, должно появиться текстовое поле. См. Примеры https://github.com/ServiceStack/ServiceStack.UseCases/tree/master/SwaggerHelloWorld.

public class Hello { 
    [ApiMember(Name=”Name*”, Description = “Name Description”, ParameterType = “path”, DataType = “string”, IsRequired = true)] 
    public string Name {get; set; } 
} 
+0

Первоначально я сделал то же самое, да, это не сработает. Я уточню вопрос, чтобы было ясно. –

+0

Попробуйте добавить Name = "Name *" в атрибут ApiMember. Я обновил свой ответ, чтобы отразить это изменение. – paaschpa

+0

Удивительный, работал как шарм. Спасибо! –

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