角 5; asp.net web api http.delete 不起作用

Posted

技术标签:

【中文标题】角 5; asp.net web api http.delete 不起作用【英文标题】:Angular 5; asp.net web api http.delete doesn't work 【发布时间】:2018-11-25 21:04:16 【问题描述】:

我在调试中运行了 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._headersthis.headars 结果是一样的:

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

405 方法不允许:

请求网址:http://localhost:52817/api/users/1 请求方法:OPTIONS 状态码:405 方法不允许 远程地址:[::1]:52817 推荐人政策:no-referrer-when-downgrade 访问控制允许方法:GET、POST、PUT、DELETE、OPTIONS 访问控制允许来源:* 允许:GET、PUT、DELETE 缓存控制:无缓存 内容长度:71 内容类型:应用程序/json;字符集=utf-8 日期:2018 年 6 月 16 日星期六 05:43:07 GMT 过期:-1 编译指示:无缓存 服务器:Microsoft-IIS/10.0 X-AspNet-版本:4.0.30319 X-Powered-By:ASP.NET X-SourceFiles: =?UTF-8?B? QzpcVXNlcnNcQmV0bWlyYVxzb3VyY2VccmVwb3NcVXNlcnNcVXNlcnNcYXBpXHVzZXJzXDE=?= 接受:/ 接受编码:gzip、deflate、br 接受语言:pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7,de;q=0.6 访问控制请求标头:内容类型 访问控制请求方法:删除 连接:保持活动 主机:本地主机:52817 来源:http://localhost:4200 用户代理:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (Khtml, like 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>
...

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

【问题讨论】:

【参考方案1】:

请参考document 为您的 asp.net webapi 启用 CORS。启用 CORS 后,您应该可以使用 Angular 应用删除。

【讨论】:

以上是关于角 5; asp.net web api http.delete 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Web API 中立即返回 HTTP 响应

具有个人用户帐户身份验证的 ASP.NET MVC 5 WEB API

ASP.NET Core 3.1 / 5 WeatherForecast 示例 Web API 项目引发错误 404

Web API1.1 ASP.NET Web API入门

无法使用 ASP.NET (MVC 4) Web API OData Prerelease 加载文件或程序集 System.Net.Http,版本 = 4.0.0.0

ASP.NET Web API 简介