首页 > 解决方案 > 角 5; asp.net web api http.delete 不起作用

问题描述

我在调试中运行了 asp.net web api 服务器,并且单独的项目使用 Angular 5 - 5.2.11。

我尝试删除数据但我不能,但是当我使用邮递员时它可以工作。

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operators';

@Injectable()
export class UserService { private getUserSucess: any;

  private  _headers =  {
    headers: new HttpHeaders().set('Content-Type', 'application/json')
  };

  private headers={
    headers: new HttpHeaders({
   'Content-Type': 'application/json'
    });
  }

  constructor(private http: HttpClient) { }

  deletUserHttp() {
    return this.http.delete( 'http://localhost:52817/api/users/1' ).subscribe(deleteSucess.bind(this), deleteError.bind(this));


 function deleteSucess(resp) {
   debugger;
   return resp;
 }
 function deleteError(resp) {
  //resp = HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, 
  debugger;
  return resp;
 }
}

我也尝试过:this._headers结果this.headars是一样的:

HttpErrorResponse { headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false,

405 方法不允许:

请求 URL:http://localhost:52817/api/users/1
请求方法:OPTIONS
状态代码:405 Method Not Allowed
远程地址:[::1]:52817
Referrer Policy:no-referrer-when-downgrade
Access-Control -Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Allow: GET,PUT,DELETE
Cache-Control: no-cache
Content-Length: 71
Content-Type: application/json; charset=utf-8
日期:2018 年 6 月 16 日星期六 05:43:07 GMT
过期:-1
Pragma:无缓存
服务器:Microsoft-IIS/10.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP 。网
X-SourceFiles: =?UTF-8?B?
QzpcVXNlcnNcQmV0bWlyYVxzb3VyY2VccmVwb3NcVXNlcnNcVXNlcnNcYXBpXHVzZXJzXDE=?= Accept: /
Accept-Encoding: gzip, deflate, br
Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7,de;q=0.6
访问-Control-Request-Headers: content-type
Access-Control-Request-Method: DELETE Con​​nection: keep-alive Host: localhost:52817 Origin: http://localhost:4200 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, 像 Gecko) Chrome/67.0.3396.87 Safari/537.36

web.config

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />       
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />    
        </customHeaders>
    </httpProtocol>
    <rewrite>
        <outboundRules>
            <clear />
            <rule name="AddCrossDomainHeader">
                <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                    <add input="{HTTP_ORIGIN}" pattern="(http(s)?://((.+\.)?domain1\.com|(.+\.)?domain2\.com|(.+\.)?domain3\.com))" />
                </conditions>
                <!--<match serverVariable="RESPONSE_Access-Control-Allow-Methods" pattern="GET, POST, PUT, DELETE, OPTIONS" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                    <add input="{HTTP_ORIGIN}" pattern="(http(s)?://((.+\.)?domain1\.com|(.+\.)?domain2\.com|(.+\.)?domain3\.com))" />
                </conditions>-->
                <action type="Rewrite" value="{C:0}" />
            </rule>
        </outboundRules>
    </rewrite>
...

请帮助我,因为我真的不知道出了什么问题。

标签: asp.net-web-apiangular5

解决方案


请参阅此文档为您的 asp.net webapi 启用 CORS。启用 CORS 后,您应该可以使用 Angular 应用程序进行删除。


推荐阅读