还好在坚持,今天继续更新第三篇随笔----使用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. 用Python写个自动ssh登录远程服务器的小工具

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...

  2. git清除用户名密码

    问题: remote: HTTP Basic: Access deniedfatal: Authentication failed for 'http://******** 解决方案: git con ...

  3. linux命令(22):mkdir命令

    实例1:创建一个空目录 mkdir  test 实例2:递归创建多个目录 mkdir  -p /home/test 实例3:创建权限为777的目录 mkdir -m 777 test 实例4:创建新目 ...

  4. highcharts 折线,饼状,条状综合图

    完整代码如下: <head> <meta http-equiv="Content-Type" content="text/html; charset=u ...

  5. GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置

    GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置 前言 此篇博客主要为Pelican在Windows平台下的配置安装所写,在此过程中主要参考资料烟雨林博客.poem_of_ ...

  6. python字符编码与解码 unicode,str

    解释以下几个问题: (1)python2中str和unicode是两种字符串类型,与字符编码方式是什么关系? (2)str和unicode是怎么相互转换的? (3)'\x...':'\u...', ' ...

  7. CentOS7下python工作环境管理

    一.pyenv管理不同的python版本1.下载安装git clone git://github.com/yyuu/pyenv.git ~/.pyenv  echo 'export PYENV_ROO ...

  8. jquery canvas 用户点击记录

    <div style="width:200px; height:20px; position:fixed; top:0; left:0; background-color:blue;& ...

  9. MFC获取句柄

    CWnd *pWnd = GetDlgItem(ID_***); // 取得控件的指针 HWND hwnd = pWnd->GetSafeHwnd(); // 取得控件的句柄

  10. 基于BeanNameViewResolver解析器,自定义视图

    概述 基于spring-mvc自定义视图,以BeanNameViewResolver作为解析器,以满足特殊需求. 本文以输出多个pdf文件的压缩文件,供前台下载的需求为例:但是不提供服务层实现. 实现 ...