C# ASP.NET[路由(“api/DVD/search”)函数未被调用

C# ASP.NET[路由(“api/DVD/search”)函数未被调用,c#,asp.net,routes,C#,Asp.net,Routes,我正在对“”进行ajax调用,它可以接受四个参数,例如title、releaseYear、director和rating,但每次我调用路由时,调试时,都不会调用函数Search()。我也试过邮递员,但似乎无论我用什么工具,它都会挂起来,无法到达路径。如果你知道设置这条路线的另一种方法,我想知道 这是我的列表APIController.cs public class ListingsAPIController : ApiController { [Route("api/dv

我正在对“”进行ajax调用,它可以接受四个参数,例如title、releaseYear、director和rating,但每次我调用路由时,调试时,都不会调用函数
Search()
。我也试过邮递员,但似乎无论我用什么工具,它都会挂起来,无法到达路径。如果你知道设置这条路线的另一种方法,我想知道

这是我的列表APIController.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);
            }
        }
    }
查看/列表/搜索.cshtml

@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>
}
@节脚本
{
$(文档).ready(函数(){
$(“#搜索表单”)。提交(功能(e){
搜索();
返回false;
});
});
函数搜索(){
var参数;
params='title='+$('#title').val()+'&releaseYear='+$('#releaseYear').val()+'&director='+
$('#director').val()+'&rating='+$('#rating').val();
$.ajax({
键入:“GET”,
网址:'http://localhost:44315/api/dvds/search?“+params,
成功:功能(结果){
控制台日志(“搜索”);
$(“#搜索结果”).empty();
$.each(结果、函数(索引、dvd){
var html=''+
'' +
'' +
''+dvd.标题+''+
“

”+dvd.ReleaseYear+”

'+ “

”+dvd.Director+”

'+ “

”+dvd.Rating+”

'+ “

”+dvd.Notes+”

'+ ''; $('#searchResults').append(html.toString()); }); }, 错误:函数(){ 警报('执行搜索时出错,请稍后重试!') }, 完成:函数(){ 警报('Search AJAX complete') } }); } }
我已尝试将路径从
列表
重命名为
DVD
,但仍然出现错误

更新:我了解到,Visual Studio 2019在将身份验证更改为“个人用户帐户”时,强制项目使用“配置HTTPS”选项。HTTP过去是旧版本的默认设置


您调用
http
,而您的api在
https
上,所以在您的搜索页面中调用https

url: 'https://localhost:44315/api/dvds/search?'
或者只删除基本URL:

url: '/api/dvds/search?' 

检查您的查询可能您在SQL中有错误

您得到的错误是什么?如果您在错误函数中设置了一个参数,您可以在警报中看到错误。是的,它需要一段时间才能显示,错误:“执行搜索时出错,请稍后再试!”我真的不觉得路线在听什么,我只是希望有一种方法可以查看正在听的路线列表,看看路线是否正确。我知道在asp.net core中我可以运行cli,但我不确定您是否可以在asp.net中执行此操作。