Пустой запрос, статус и ошибка из Web API - PullRequest
0 голосов
/ 09 марта 2020

У меня есть следующий контроллер, определенный в проекте веб-API

    public IEnumerable<Speciality> GetAllSpecialities()
    {
        List<Speciality> specialities = null;

        try
        {
            specialities = (new Datatable(Properties.Settings.Default.DataConnection)).Select<Speciality>(null);

        }
        catch ( System.Exception ex)
        {
            throw ex;
        }
        finally
        {

        }

        return specialities;
    }

    public IHttpActionResult GetSpeciality(String id)
    {
        Speciality speciality = null;

        try
        {
            speciality = DALObject.Get<Speciality>(Properties.Settings.Default.DataConnection,
                new Dictionary<string, object>()
                {
                    { "SpecialityCode",id }

                },null);

            if (speciality == null)
            {
                return NotFound();
            }
        }
        catch ( System.Exception ex)
        {
            throw ex;
        }

        return Ok(speciality);

    }

Если я вызываю веб-службу из браузера, они оба возвращают объект JSON назад, сначала список специальностей и второй - индивидуальный.

На моей странице у меня есть следующий ajax код

    $.ajax({
        url: 'http://stg1edmapps01:9090/api/specialties',
        contentType:'json',
        success: function (result) {
            alert('data collected successfully');
        },
        error: function (request, status, error) {
            alert('something is broken');
            alert('Response ' + error);
        }
    });

Здесь я получаю три оповещения;

Первое, которое показывает его вызов кода Второй говорит «что-то сломано»

Третий, тем не менее, просто дает слово «Ответ», если только я не передам сообщение об ошибке окончательному предупреждению, и в этом случае он выдаст строку «Ошибка ответа».

Что я сделал не так, когда ожидал получить объект JSON со списком специальностей. То же самое происходит независимо от прохождения API / специальности / 100 или просто API / специальности

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Лучший способ узнать, что происходит в этом случае, - это сделать console.log (request + status + error); и получить больше информации. Я также вижу, что при возврате нужно сделать return NotFound();, но я не вижу, чтобы оно возвращалось.

В качестве последнего варианта вы можете попытаться сделать вызов с fetch (он не работает с inte rnet explorer) https://developer.mozilla.org/es/docs/Web/API/Response/status

0 голосов
/ 11 марта 2020

Ответ Энрике дал мне возможность выяснить, в чем заключается проблема, связанная с междоменными проблемами, и политикой CORS.

Поскольку вся цель этого проекта для общей библиотеки, это происходит быть проблемой, и библиотека должна предоставить соответствующую информацию заголовка вызывающему приложению.

Для этого сначала используйте диспетчер пакетов NUGET для установки модуля Microsoft.As pNet .WebApi.Cors.

Затем в WebApiConfig добавьте следующую строку в функцию Register.

       // enable CORS support
        config.EnableCors();

Каждый контроллер затем должен иметь следующий атрибут

[EnableCors(origins: "*", headers: "*", methods: "*")]

Обратите внимание, что это позволит API принимать звонки от любого клиента, при этом CORS не становится проблемой, и его следует использовать с осторожностью.

...