【Owin 学习系列】1. 第一个 Owin 程序

IIS 中的 Owin

在 IIS 里面部署 Owin,既能得到 Owin 管道模型的灵活性和模块特性,也能很好地利用 IIS 成熟的配置,Owin 程序将会跑在 ASP.NET request 的管道中。

首先建一个空的 Web 项目

添加 Nuget 包 Microsoft.Owin.Host.SystemWeb

添加一个 Startup 类

替换 Startup.cs 的代码

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinDemo.Startup))]

namespace OwinDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
            app.Run(context=>
            {
                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello, world.");
            });
        }
    }
}

F5 运行查看结果

控制台 Self-Host OWIN

在 Self - Host 程序中,你的程序将会使用 HttpListener 创建一个进程来当作 Http Server 。

首先添加一个控制台程序

添加 NuGet 包 Microsoft.Owin.SelfHost

添加一个 Owin Startup.cs 文件

替换 Startup.cs 文件内容

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinConsoleDemo.Startup))]

namespace OwinConsoleDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
            app.Run(context=>
            {
                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello , this is console appliaction from self owin.");
            });
        }
    }
}

修改控制台程序 Main 函数代码

static void Main(string[] args)
    {
        using (Microsoft.Owin.Hosting.WebApp.Start<Startup>("http://localhost:9000"))
        {
            Console.WriteLine("Press [enter] to quit...");
            Console.ReadLine();
        }
    }

F5 运行,然后浏览器访问 http://localhost:9000

添加 Owin Diagnostics

Microsoft.Owin.Diagnostics 包包含了一个能捕获未处理的异常的中间件,并且能把错误详情显示在一个 Html 页面中。

首先在 Nuget 包里安装 Microsoft.Owin.Diagnostics

然后替换 Startup.cs 代码

using System;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinDemo.Startup))]

namespace OwinDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseErrorPage();

            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
            app.Run(context=>
            {
                if((context.Request.Path.ToString() == "/fail"))
                {
                    throw new Exception("This is Owin Diagnostics Test.");
                }

                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello, world.");
            });
        }
    }
}

F5 运行,地址栏输入 http://localhost:56764/fail ,就可以在错误页面看到详细的错误信息

源代码链接:

链接: http://pan.baidu.com/s/1c2w7Kuk 密码: s6h6

参考地址:

https://docs.microsoft.com/zh-cn/aspnet/aspnet/overview/owin-and-katana/getting-started-with-owin-and-katana

时间: 2024-10-07 03:16:21

【Owin 学习系列】1. 第一个 Owin 程序的相关文章

Java学习 1.4——第一个Java程序:Hello World!

这一篇一起来写第一个Java程序,同时也了解一下IDEA的使用: 打开IDEA,新建项目: 选择Java,右边project SDK是选择Java版本,上一篇我们自己安装了JDK1.8,IDEA自带一个JDK11: 写一个小程序,选择什么JDK都没影响,不过既然已经安装了JDK1.8,就用吧. 就写一个hello world程序也不需要加什么框架,next: 这一步会让选择是否创建一个模板,无关紧要,下一步: 输入项目名称,选择路径,我一般是创建一个当天日期的文件夹来存放当天学习的内容,也是记录

学习笔记之03-第一个C程序代码分析

一.代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下: 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 // insert code here... 5 printf("Hello, World!\n"); 6 return 0; 7 } 1.#include <stdio.h> #include 是

C语言学习笔记之第一个C程序及编译运行(一)

一.第一个C程序 1>C程序由函数构成 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”.所以,你可以说C语言程序是由函数构成的. 2>C程序的入口 C程序的入口是一个名字叫做main的函数,简称main函数.(为了区分函数,每一个函数都有一个名称)也就是说,不管整个程序中有多少个函数,都是先执行main函数.不管main函数写在文件中间,还是文件末尾,也都是先执行main函数. 注意: 如果一个C程序中没有main函数,那么

OD学习笔记10:一个VB程序的加密和解密思路

前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程语言. VB是由事件驱动的编程语言:就是在可视化编程环境下我们可以绘制一些窗体,按钮,编辑框等控件,然后为这些控件所可能引发的事件如按钮被单击或者被双击编写对应的处理代码. 所有的VB程序几乎都是依赖于一个外部的动态链接库.这个动态链接库的名字是:MSVBVM60.dll(可能有多个版本,但名字都差

Servlet&amp;JSP学习笔记:第一个Servlet程序

第一个Servlet程序代码如下,接着根据这个小程序逐步讲解. import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReq

学习笔记_第一个strut程序_之中文乱码,过滤器解决方案及过程总结

1.  第一次碰到加过滤器的过程,就是在学习struct1的时候,中文乱码 几个需要注意的关键字 2.什么叫package 所谓package就是打包的意思,就是说以下程序都是处于这个包内,所以一开始你看见src下拉菜单下面都是一些自己建的就是为了分开结构的作用 3.  建好了,就可以在包的下面建子文件,可以是class类文件,也可以是各种jsp,servlet文件. 4.  任何servlet文件或者显示界面文件都要在web.xml文件中进行配置,才能加载进去,而且是自动加载 5.  写代码的

【SignalR学习系列】4. SignalR广播程序

创建项目 创建一个空的 Web 项目,并在 Nuget 里面添加 SignalR,jQuery UI 包,添加以后项目里包含了 jQuery,jQuery.UI ,和 SignalR 的脚本. 服务端代码 创建 Stock 类 using System; namespace SignalRDemo4 { public class Stock { private decimal _price; public string Symbol { get; set; } public decimal Pr

学习笔记之第一个C程序

1.打开Xcode,新建Xcode项目 2.选择最简单的命令行项目 3.输入项目信息 4.选择一个用来存放C程序代码的文件夹 5.运行项目 运行结果如图(控制台输出)

C语言学习系列(三)C程序结构

一.C程序结构 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 new C program demo: 1 #include <stdio.h> /*预处理器指令*/ 2 /* 第一个中文程序实例 */ 3 int main() /*main函数*/ 4 { 5 int i; /*变量*/ 6 i=1; /*语句&表达式*/ 7 printf("我的第%d个C程序\n",i); /*语句&表达式*/ 8 return 0