Клиент Angular для IIS размещал Entity Framework CORS, не позволяя ответить - PullRequest
0 голосов
/ 01 января 2019

Конфигурация: Angular 6 отправляет http-запрос;это localhost: 4200.Запрос к Entity Framework (стандартный .net), размещенный на IIS в порту 4000. Он отправляет POST в / api / Registration / CreateNew, передавая объект данных в теле.Функции получения контроллера были протестированы как запросы не-CORS с использованием браузера, отправляющего напрямую на localhost: 4000, и они работают должным образом.

Ошибка: «Доступ к XMLHttpRequest на« http://localhost:4000/api/Registration/CreateNew' от источника »http://localhost:4200' был заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: регистрация: 1 У него нет статуса HTTP ok. "

Ниже приведен снимок экрана fiddlerЗаголовок Запрос от 4200 (угловой) и ответ.

enter image description here

IIS Entity Framework WebConfig:

  <appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

<add key="allowedCorsOrigins" value="http://localhost:4200" />
<add key="allowedCorsMethods" value="get, post, put, delete, options, batch" />
<add key="allowedCorsHeaders" value="*" />
  </appSettings>

App_Start / WebApiConfig.cs

        public static void Register(HttpConfiguration config)
    {
        config.EnableCors();

        // Web API configuration and services
        // Web API routes
        config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

Также добавлен атрибут класса к классу контроллера:

    [RoutePrefix("api/Registration")]
[EnableCors(origins: "http://localhost:4200", headers: "*", methods: "*")]
public class RegistrationController : ApiController
{

Согласно заголовкам Fiddler, показанным выше, может показаться, что запросы CORS должны выполняться.У меня есть точки останова на линиях контроллера IIS, и они никогда не получают удар, поэтому может показаться, что (если я правильно понимаю) «предполетный» запрос не позволяет запрос CORS.

К сожалению, этозначительный кусок кода и его трудно выложить в сети.

1 Ответ

0 голосов
/ 02 января 2019

Согласно вашему сообщению об ошибке, оно возвращает ошибку 404, а не ошибку 401.Ошибка 404 означает, что он не смог найти страницу.

Насколько я знаю, ошибка, связанная с CORS, равна 401, как показано ниже:

enter image description here

Я предлагаю вам проверить ваше приложение, чтобы убедиться, что вы использовали правильный URL для доступа к веб-API.

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