asp.net-web-api - 角 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 Connection: 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 webapi 启用 CORS。启用 CORS 后,您应该可以使用 Angular 应用程序进行删除。
推荐阅读
- python - 为什么在我的猜谜游戏中数字返回高或低不正确
- python - 概括使用 numpy.meshgrid
- python - 所有 v4 请求都给出错误代码 403(禁止)
- javascript - 是否可以使用 HTML、CSS 和 Javascript 来创建可以访问 Iphone 蓝牙配对的 Iphone 应用程序?
- c# - 如何在我的机器人项目中解析包含来自 Microsoft QnA Maker 的转义序列的问题?
- css - 自动反应导入文件并导致构建错误?
- node.js - 无法使用 Node.js、mssql 和 express 连接到 Microsoft SQL Server
- azure - 天蓝色 blob 下载任务问题
- sql - 我可以参考这张表吗?
- java - 用记事本编写并通过命令提示符启动的 Java 程序在编写类时都会遇到相同的错误