WABAPI使用
最近写一个供其他系统调用的接口,决定使用wabapi,以前只是大概了解wabapi是什么东西,没有写过自己的api,从头开始学习.
1、开始创建一个webapi的项目,不得不说VS真的替我们省了好多事,基本需要的东西都创建好了,测试的valueAPI也可以正常调用;
2、创建完成之后开始添加编写字节的API,然后发现跨域调用的问题,从网上查了资料,配置webconfig,,添加如下配置
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
</customHeaders>
</httpProtocol>
不加认证的API加上之后基本就可以实现跨域调用了
3.API写完之后调用,因为API创建的数据库是数据code first ,会创建identityUser数据库,想让第三方系统的数据和已有数据库管理上,就在认证用户的时候做了点小处理,
GrantResourceOwnerCredentials方法中添加对aspnetuser和已有数据库的管理操作;
4.改完之后跨域调用发现能正常获取token,但是不能正常调用API,报405的错误,然后调试发现是头部认证没有穿过去,然后不论是post,还是get到服务器都成了option;
5.然后去网上找资料发现官方有对4.5以上版本提供跨域解决方案,就用nuget安装了aspnet.wabapi.cor;
6.添加跨域特性之后发现,还是不能调用,奇葩的是我把上面添加的webconfig里面的配置注释掉了,发现API能正常调用,但是token不能正常获取,ajax报错,更奇怪的是我在fiddle里面发现,token请求又是正常的,而且返回了有效的token;
7.调试没发现社么不对的地方,就以为是ajax格式的问题,结果改了N种格式也不对;
8.查资料的时候偶然发现一篇文章,里面说:要让WebAPI支持CORS,第一步就是在web.config里把“ <remove name="OPTIONSVerbHandler" /> ”删掉。
9.删掉之后果然直接使用配置webconfig的方式就能正常访问;
10.
WABAPI使用的更多相关文章
- 做完小程序项目、老板给我加了5k薪资~
大家好,我是苏南,今天要给大家分享的是最近公司做的一个小程序项目,过程中的一些好的总结和遇到的坑,希望能给其他攻城狮带来些许便利,更希望能做完之后老板给你加薪- 今天是中秋节的第一天,假日的清晨莫名的 ...
- 微服务之十四如何在 Ocelot 网关中配置多实例 Swagger 访问
一.介绍 当我们开发基于微服务的应用程序的时候,有一个环节总是跳不过去的,那就是要创建 WebApi,然后,我们的应用程序基于 WebApi 接口去访问.在没有 Swagger 以前,我们开发好了 W ...
随机推荐
- JUnit org.junit.runner.Request.classWithoutSuiteMethod解决方法
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标
#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标 2012-08-25 09:11匿名 | 浏览 3286 次 C#编程 C#项目用vs2005自带的工具打包后安装的桌面快捷方式图标怎么设 ...
- 谈谈JPA-04-JPA的常用API
JPA相关接口/类: Persistence Persistence 类是用于获取 EntityManagerFactory 实例.该类包含一个名为 createEntityManagerFacto ...
- .ecp认证文件(10.3版本)
arcgisserver,103,ecp.arcgis.engine,01-jan-2030,E9PJJE2G05FB8RZDF121 3dengine,103,ecp.arcgis.engine,0 ...
- css3制作滚动按钮
1,中间圆点用到css3的gradient属性 2,运动用到css3的transition属性 3,需要写各个浏览器的兼容 代码如下 <!DOCTYPE html> <html la ...
- Unity Invoke 方法
Invoke() 方法是 Unity3D 的一种委托机制 如: Invoke("a", 5); 它的意思是:5 秒之后调用 a() 方法: 使用 Invoke() 方法需要注意 ...
- C# BackgroundWorker的使用 转
转自http://www.cnblogs.com/tom-tong/archive/2012/02/22/2363965.html 感谢作者详细的介绍 C# BackgroundWorker的使用 ...
- MASS批量维护
T-CODE: MASS 批量更改MASS_CHARVAL 特征的批量维护MASS_EINE 信息记录的成批维护MASS_EKKO 采购订单的成批维护MASS_MARC 后勤/配送的成批维护MASS_ ...
- SQL Server数据库(作业)
create datebase zuoye2gouse zuoyegocreate table student --学生表( Sno varchar(20) not null primary key, ...
- Mysql 字符串处理函数
函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my ...