Пользовательский путь веб-api AspNet не работает.json заканчивается в маршруте path

#asp.net #vb.net #asp.net-web-api

#asp.net #vb.net #asp.net-web-api

Вопрос:

я создал новый проект из Visual Studio 2019 типа web api, я хочу, чтобы моя конечная точка была такой / api / products.json, но это не работает

    <Route("/api/products.json")>
   <HttpGet()>
   Public Function RetriveData() As ListarRes

    Return New ListarRes()
   End
  

когда я запускаю проект, swagger показывает идеальный результат, но если я протестирую его, возвращается ошибка 404

в конфигурации включен MapHttpAttributeRoutes()

проблема связана с «.json», если я запрашивал

    <Route("/api/products")>
  

это работает, так как я должен создать его пользовательский маршрут?

Комментарии:

1. Какова цель .json? Почему бы просто не использовать директивы форматирования в заголовках запроса? планируете ли вы иметь что-то вроде api / products. json и api.products.xml ?

Ответ №1:

ну, это было очень просто

asp.net веб-api — стиль использования

расширение == конкретный обработчик

итак, я создал макет обработчика, и он сработал

 Public Class AppJsonExtension
  Implements IHttpHandler

  Public ReadOnly Property IsReusable As Boolean Implements IHttpHandler.IsReusable
    Get
        Return False
    End Get
  End Property

  Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest

  End Sub

End Class
  

и в web.config добавлен

 <system.webServer>
  <handlers>
    ...
    <add name="JsonHandler" path="*.json" verb="*" type="TestApp.AppJsonExtension, TestApp" />
  </handlers>
</system.webServer>