ASP. NET [Route ("api / dvds / search")] не вызывается - PullRequest
0 голосов
/ 27 мая 2020

Я делаю вызов ajax по адресу 'http://localhost: 44315 / api / listings / search ', который может принимать четыре параметра, такие как название, год выпуска, директор и рейтинг, но каждый раз, когда я вызываю маршрут, при отладке функция Search() никогда не вызывается. Я также пробовал почтальон, но похоже, что какой бы инструмент я ни использовал, он просто зависает и не может добраться до пути. Если вы знаете другой способ настройки этого маршрута, я хотел бы знать.

Вот мой ListingsAPIController.cs

public class ListingsAPIController : ApiController
    {
        [Route("api/dvds/search")]
        [AcceptVerbs("GET")]
        public IHttpActionResult Search(string title, int? releaseYear, string director,
            string rating)
        {
            var repo = DvdRepositoryFactory.GetRepository();

            try
            {
                var parameters = new ListingSearchParameters()
                {
                    Title = title,
                    ReleaseYear = releaseYear,
                    Director = director,
                    Rating = rating
                };

                var result = repo.Search(parameters);
                return Ok(result);
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }
    }

Просмотры / листинги / Search.cs html:

@section Scripts
{
    <script>
        $(document).ready(function () {
            $("#searchForm").submit(function (e) {
                search();
                return false;
            });
        });

        function search() {            
            var params;

            params = 'title=' + $('#title').val() + '&releaseYear=' + $('#releaseYear').val() + '&director=' +
                $('#director').val() + '&rating=' + $('#rating').val();

            $.ajax({
                type: 'GET',
                url: 'http://localhost:44315/api/dvds/search?' + params,
                success: function (results) {
                    console.log("search");
                    $('#searchResults').empty();

                    $.each(results, function (index, dvd) {                        
                        var html = '<div class="col-xs-8 col-sm-4 col-md-4">' +
                            '<div class="card" style="border:2px solid #0094ff; width: 20rem; border-radius: 5px; ">' +
                            '<div class="pl-3 pt-1 text-center">' +
                            '<h4 class="card-title text-primary">' + dvd.Title + '</h4>' +
                            '<p class="recentListing">' + dvd.ReleaseYear + '</p>' +
                            '<p class="recentListing">' + dvd.Director + '</p>' +
                            '<p class="recentListing">' + dvd.Rating + '</p>' +
                            '<p class="recentListing">' + dvd.Notes + '</p>' +
                            '</div>';

                        $('#searchResults').append(html.toString());
                    });

                },
                error: function () {
                    alert('Error performing search, try again later!')
                },
                done: function () {
                    alert('Search AJAX complete')
                }
            });
        }
    </script>
}

Я пробовал переименовать маршрут с listings на dvds, но все равно получаю ошибку.

ОБНОВЛЕНИЕ: Я узнал, что Visual Studio 2019 вынудила проекты использовать параметр «Настроить для HTTPS» при изменении Аутентификации на «Индивидуальные учетные записи пользователей» . HTTP использовался по умолчанию для более старых версий.

enter image description here

1 Ответ

0 голосов
/ 27 мая 2020

Вы вызываете http, а ваш api - https, поэтому на странице поиска вызовите https

url: 'https://localhost:44315/api/dvds/search?'

или просто удалите базовый URL:

url: '/api/dvds/search?' 

Проверьте свой запрос возможно у вас ошибка в SQL

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