Angular Ошибка ERR_CONNECTION_REFUSED во время почтового запроса - PullRequest
0 голосов
/ 01 августа 2020

Я использую CORS для подключения Angular к базе данных через. NET WebAPI, но получаю эту ошибку:

введите описание изображения здесь

Я не могу точно определить, где проблема: Angular или. NET, поэтому любая помощь приветствуется. Вот мой angular компонент + сервис. Дайте мне знать, если вам нужна дополнительная информация:

export class SleepComponent implements OnInit {

  constructor(public service : SleepService) { }

  ngOnInit(): void {
    this.resetForm();
  }

  resetForm(form?: NgForm) {
    if(form!=null)
    form.resetForm();
    this.service.formData = {
      SleepId : null,
      Start: '',
      Finish: '', 
    }
  }

  onSubmit(form : NgForm) {
      this.insertRecord(form)
  }

  insertRecord(form: NgForm) {
    console.log(this.service.formData.Finish)
    this.service.postSleep(form.value).subscribe(
      res=> { this.resetForm(form) }
    ), 

      err => {
      console.log(err);
    }
  }
export class SleepService {

  formData: Sleep;
  readonly rootUrl = "https://localhost:44398/api"

  constructor(private http: HttpClient) { }

  postSleep (formData: Sleep) {
    return this.http.post(this.rootUrl+'/main_tb', formData )

  }

вот контроллер api:

     [ResponseType(typeof(main_tb))]
        public IHttpActionResult Postmain_tb(main_tb main_tb)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.main_tb.Add(main_tb);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = main_tb.SleepId }, main_tb);
        }

Вот webconfig.cs

{

            //Enable CORS
            config.EnableCors(new EnableCorsAttribute("http://localhost:4200/", headers:"*", methods: "*"));
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

1 Ответ

0 голосов
/ 01 августа 2020

Добавьте приведенную ниже конфигурацию в свою веб-конфигурацию

<httpProtocol>
      <customHeaders>
  <add name="Access-Control-Allow-Origin" value="*" />
  <add name="Access-Control-Allow-Headers" value="accept,accesstoken,authorization,cache- 
  control,pragma,content-type,origin" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,TRACE,HEAD,OPTIONS,TOKEN" />
      </customHeaders>
    </httpProtocol>

и вот конфигурацию webapi cors

var cors = new EnableCorsAttribute("http://localhost, ", "accept,accesstoken,authorization,cache-control,pragma,content-type,origin", "GET,PUT,POST,DELETE,TRACE,HEAD,OPTIONS,TOKEN");
    config.EnableCors(cors);

Если он работает нормально из Postman, а не из браузера, это проблема CORS, Вы можете проверить вкладку проверки сети для предварительного запроса (ОПЦИИ), пожалуйста, подтвердите его работу

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