Web API使用记录系列(三)Web API与Owin
还好在坚持,今天继续更新第三篇随笔----使用owin来启动WebAPI(这里还是以IIS为宿主,当然也可以使用别的如Console、Windows Server等)
关于OWIN(Open Web Server Interface for .NET),.Net Web开发架构,在.NET Web Servers与Web Application之间定义了一套标准接口,目标是用于解耦Web Server和Web Application.
关于详细讲解,可阅读 Never、C的这篇文章 [ASP.NET] 下一代ASP.NET开发规范:OWIN
我们这里使用OWIN是为了下一节的OAuth做准备,记录的可能简单一些,后续有机会再单开一篇随笔记录下。
1.安装引用
Owin
Microsoft.AspNet.WebApi.Owin
Microsoft.Owin.Host.SystemWeb
Microsoft.Owin.Cors
安装Microsoft.AspNet.WebApi.Owin的时候,指定下版本,保持与WebApi的版本相同。否则最新的版本会安装响应的依赖,造成升级了api相关dll的版本
2.根目录创建StartUp文件并配置如下
[assembly: OwinStartup(typeof(SampleAPI.StartUp))]
namespace SampleAPI
{
public class StartUp
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll); HttpConfiguration config = GlobalConfiguration.Configuration;
GlobalConfiguration.Configure(WebApiConfig.Register);
app.UseWebApi(config);
}
}
}
注:
①程序使用OWIN后,配置OWIN启动
》使用OwinStartup特性,如上述代码中添加 [assembly: OwinStartup(typeof(SampleAPI.StartUp))]
》添加OIWIN启动发现 <add key="owin:AutomaticAppStartup" value="true"></add> (测试好像不加也可以,禁用的时候可以使用)
②StartUp中使用 HttpConfiguration需要用GlobalConfiguration.Configuration,否则HelpPage页面的api列表将获取不到
参考HelpPage原理:https://www.cnblogs.com/gdnyfcuso/p/8308357.html
3.使用owin后HelpPage与Home无法访问处理(如果使用OWIN后未出现该问题的可以不配置)
使用Owin后造成HelpPage与Home的无法访问或HelpPage页面API接口列表不显示的处理如下
安装Owin.Extensions
在App_Start中添加类OwinExtend,内容如下:
public static class OwinExtend
{
internal static void UseWebApiAndHelp(this IAppBuilder app, HttpConfiguration config)
{
// WepApiStartup.Configure(config); app.UseHandlerAsync((request, response, next) =>
{
if (request.Path == "/") //app.Map using a regex exclude list would be better here so it doesn't fire for every request
{
response.StatusCode = ;
response.SetHeader("Location", "/Help");
return Task.FromResult();
} return next();
}); // Map the help path and force next to be invoked
app.Map("/help", appbuilder => appbuilder.UseHandlerAsync((request, response, next) => next()));
app.Map("/home", appbuilder => appbuilder.UseHandlerAsync((request, response, next) => next())); app.UseWebApi(config); }
}
修改StartUp文件中的app.UseWebApi(config)为app.UseWebApiAndHelp(config);
4.异常记录
①The following errors occurred while attempting to load the app.- No assembly found containing an OwinStartupAttribute.
》是否添加StartUp文件》是否使用OwinStartup特性》是否启用OWIN启动发现
②没有 OWIN 身份验证管理器与此请求相关联
https://www.cnblogs.com/OpenCoder/p/6900704.html
本节内容记录到此,有用到的再补充,有不对的地方希望大家帮忙指正修改,感谢!
Web API使用记录系列(三)Web API与Owin的更多相关文章
- Web API使用记录系列(二)HelpPage优化与WebApiTestClient
继续使用记录的第二节,HelpPage的优化与测试工具WebApiTestClient的使用. 之前没怎么整理博客,都是记录一下笔记,真正好好整理发现没想像的那么简单.不管怎么说还是培养下写博客的习惯 ...
- Web API使用记录系列(一)创建API项目与基本配置
本系列文章主要记录Web API使用过程中的一些个人总结,包括创建API项目.基础配置.ApiTestClient使用与HelpPage页面的优化.Owin与OAuth的使用等. 本节主要内容是API ...
- Web API使用记录系列(四)OAuth授权与身份校验
呼,开干第四篇,基于OWIN搭建OAuth认证授权服务器与接口身份校验. OAuth包含授权码模式.密码模式.客户端模式和简化模式,这里我们文章记录的是密码模式和客户端模式. 目录 引用安装 授权处理 ...
- Kafka系列三 java API操作
使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- RabbitMQ系列(三)--Java API
基于java使用RabbitMQ 框架:SpringBoot1.5.14.RELEASE maven依赖: <dependency> <groupId>com.rabbitmq ...
- Apache Kafka系列(三) Java API使用
Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 摘要: Apache Kafka Java ...
- Hadoop运维记录系列
http://slaytanic.blog.51cto.com/2057708/1038676 Hadoop运维记录系列(一) Hadoop运维记录系列(二) Hadoop运维记录系列(三) Hado ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
- Web API路由与动作(三)
本章包括三个小节 如果你输入了mvc的路由规则 这个可以粗略过一遍即可 内容说明有点繁琐 原文地址:http://www.asp.net/web-api/overview/web-api-rout ...
随机推荐
- 64_g1
GAPDoc-1.5.1-12.fc26.noarch.rpm 13-Feb-2017 22:37 1082286 GAPDoc-latex-1.5.1-12.fc26.noarch.rpm 13-F ...
- 菜鸟学习nodejs--Socket.IO即时通讯
https://blog.csdn.net/lovemenghaibin/article/details/51263774
- Mysql 数据库学习笔记04 函数
一.创建自定义函数 * 使用自定义函数,可以返回字符串.整型.实数或者其他类型: create [aggregate] function 名称 (参数列表) return type begin //函 ...
- matlab安装及使用
matlab R2015b在ubuntu 14.04环境下的安装 挂载及运行安装程序 sudo mkidr /media/matlab mount -o loop matlab_R2015b.iso ...
- LoadRunner:关联HTTP请求
LoadRunner:关联HTTP请求 本例通过一个使用HTTP/HTML协议发送.获取服务器数据的vuser脚本,分析LoadRunner如何进行HTTP关联. 下面这个例子包括两个事务:上传数据到 ...
- windows安装elasticsearch和elasticsearch-head插件
1.去官网下载最新软件 选择zip包,https://www.elastic.co/downloads/elasticsearch 2.下载node 必须 > 6.0已上 3.解压elastic ...
- bzoj 1477 扩展欧几里德
思路:很裸的求相遇问题. #include<bits/stdc++.h> #define LL long long #define fi first #define se second # ...
- CentOS7下Samba的安装与配置
一.Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享 ...
- Ubuntu 18.04安装网易云音乐(转载)
作为Ubuntu下唯一一款超级好用的音乐软件,必须下载. 提升为root权限后操作 0 : 网易云音乐1.0.0(该版本较为好安装)下载地址 http://s1.music.126.net/downl ...
- 【转载】Scroller源码解析
原文地址:https://github.com/Skykai521/AndroidSdkSourceAnalysis/blob/master/article/Scroller%E6%BA%90%E7% ...