还好在坚持,今天继续更新第三篇随笔----使用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); 

 参考:https://stackoverflow.com/questions/18921215/cant-get-asp-net-web-api-2-help-pages-working-when-using-owin

  

  

  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的更多相关文章

  1. Web API使用记录系列(二)HelpPage优化与WebApiTestClient

    继续使用记录的第二节,HelpPage的优化与测试工具WebApiTestClient的使用. 之前没怎么整理博客,都是记录一下笔记,真正好好整理发现没想像的那么简单.不管怎么说还是培养下写博客的习惯 ...

  2. Web API使用记录系列(一)创建API项目与基本配置

    本系列文章主要记录Web API使用过程中的一些个人总结,包括创建API项目.基础配置.ApiTestClient使用与HelpPage页面的优化.Owin与OAuth的使用等. 本节主要内容是API ...

  3. Web API使用记录系列(四)OAuth授权与身份校验

    呼,开干第四篇,基于OWIN搭建OAuth认证授权服务器与接口身份校验. OAuth包含授权码模式.密码模式.客户端模式和简化模式,这里我们文章记录的是密码模式和客户端模式. 目录 引用安装 授权处理 ...

  4. Kafka系列三 java API操作

    使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  5. RabbitMQ系列(三)--Java API

    基于java使用RabbitMQ 框架:SpringBoot1.5.14.RELEASE maven依赖: <dependency> <groupId>com.rabbitmq ...

  6. Apache Kafka系列(三) Java API使用

    Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 摘要: Apache Kafka Java ...

  7. Hadoop运维记录系列

    http://slaytanic.blog.51cto.com/2057708/1038676 Hadoop运维记录系列(一) Hadoop运维记录系列(二) Hadoop运维记录系列(三) Hado ...

  8. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  9. Web API路由与动作(三)

    本章包括三个小节  如果你输入了mvc的路由规则 这个可以粗略过一遍即可  内容说明有点繁琐 原文地址:http://www.asp.net/web-api/overview/web-api-rout ...

随机推荐

  1. 003 CopyOnWriteArrayList原理

    聊聊并发-Java中的Copy-On-Write容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候 ...

  2. 【LOJ6201】【bzoj4939】【YNOI2016】掉进兔子洞

    一道比较简单的莫队…… 用bitset维护三个区间的交元素. #include<bits/stdc++.h> ; ; #define UI unsigned int #define rep ...

  3. JS函数和变量名称冲突

    在JS中如果函数名与变量名冲突,JS是怎么执行的? <script> console.log(sum);//function sum(){} function sum(){} var su ...

  4. mysql 5.1.7.17 zip安装 和 隔段时间服务不见了处理

    Mysql社区版下载地址:http://dev.mysql.com/downloads/mysql/ 因为我的系统版本是64,因此这里下载x64版本.下载完之后解压至D:\Dev\Mysql(即为my ...

  5. mysql设置服务器编码

    今天写java程序的时候出现了插入mysql数据中文乱码问题,确定数据库和表的编码都已指定utf-8.百度后得知mysql安装后需设置服务器编码,以下是解决方法(ubuntu; mysql 5.6.2 ...

  6. linux命令(1):sed命令

    实例一: Config_file文件内容如下: sed去除注释行:sed -i -c -e '/^#/d' config_file  [会删除指定文件带有注释行] sed去除空行: sed -i -c ...

  7. DevExpress控件-GridControl根据条件改变单元格(Dev GridControl 单元格着色)

    DevExpress控件-GridControl根据条件改变单元格颜色,如下图: 解决办法:可以参考:http://www.cnblogs.com/zeroone/p/4311191.html 第一步 ...

  8. python类的使用与多文件组织

    多文件的组织 跨目录级导入模块 from ..xxfile import xxmodule #从上级目录中的xxfile中导入xxmodule import xxsub_dir.xxfile #从xx ...

  9. Centos7Yum安装配置指定版本nginx

    1.安装 rpm -ivh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm 2.启 ...

  10. Pychram------更改编辑区域的字体大小和背景颜色

    如上设置完成即可看到如下的效果设置完成.