Я делаю вызов 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 использовался по умолчанию для более старых версий.