Невозможно вызвать asp.net web api, используя ajax, получая 405 и другие ошибки - PullRequest
0 голосов
/ 15 октября 2018

Я сделал веб-интерфейс в asp.net для отправки электронной почты и протестировал его с почтальоном, запрос там работает нормально, но когда я пытаюсь вызвать его с помощью вызова AJAX, он выдает ошибку '405 (метод не разрешен)'и' Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Следовательно, Origin 'http://localhost:11495' не разрешен доступ.'

Я не знаю, что не так, я уже пытался включить и отключить общий доступ к ресурсам между источниками с расширением Chrome, и он все равно победил 'т работа.Что я делаю неправильно?

Я звоню API из другого проекта, но оба в данный момент находятся на localhost.

Любая помощь приветствуется, я застрял в течение нескольких часов.

Вот вызов AJAX:

var emailObj = {};
    emailObj.Subject = timelineObj.Subject;
    emailObj.Body = timelineObj.Body;
    emailObj.SendTo = ["test@email.com"]; 
    emailObj.CCTo = [];

    $.ajax({
        type: "POST",
        async: false,
        url: "http://localhost:16627/sendemail",
        data: JSON.stringify({ emailParams: emailObj }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            $.unblockUI();
            console.log(data.d);

        },
        error: function (data) {
            $.unblockUI();
            console.log(data.d);
            alert("An error has occurred during processing your request. [ADD EMAIL]");
        }
    });

Вот метод API:

        [Route("sendemail")]
        [HttpPost]
        public string[] SendEmail(EmailParams emailParams)
        {
            using (GoalEntities db = new GoalEntities()) {

                Goal_Emails ge = new Goal_Emails();
                try
                {
                    BEMail mail = new BEMail();
                    string from = ge.SentFrom = GetParameterByName("EmailUsername").Value;
...

Снимок экрана: тест почтальона работает нормально

1 Ответ

0 голосов
/ 15 октября 2018

Благодаря комментариям Мохсина я обнаружил, что не включил CORS в своем веб-интерфейсе.

Следовал этому руководству https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api и все работало нормально.

...