KatanaConsole.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Owin;
using Microsoft.Owin.Hosting;
using Microsoft.Owin;
using System.IO;
namespace KatanaConsole
{
// use an alias for the OWiN AppFunc
using AppFunc = Func<IDictionary<string, object>, Task>;
class Program
{
static void Main(string[] args)
{
WebApp.Start<Startup>("http://localhost:4321");
Console.WriteLine("Server Started; Press enter to Quit");
Console.ReadKey();
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
var middleware = new Func<AppFunc, AppFunc>(MyMiddleWare);
app.Use(middleware);
}
public AppFunc MyMiddleWare(AppFunc next)
{
AppFunc appFunc = async (IDictionary<string, object> environment) =>
{
// Do something with the incoming request:
var response = environment["owin.ResponseBody"] as Stream;
using (var writer = new StreamWriter(response))
{
await writer.WriteAsync("<h1>Hello First Middleware</h1>");
}
// Call the next Middleware in the chain:
await next.Invoke(environment);
};
return appFunc;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Owin;
using Microsoft.Owin.Hosting;
using Microsoft.Owin;
using System.IO;
namespace KatanaConsole
{
// use an alias for the OWiN AppFunc
using AppFunc = Func<IDictionary<string, object>, Task>;
class Program
{
static void Main(string[] args)
{
WebApp.Start<Startup>("http://localhost:4321");
Console.WriteLine("Server Started; Press enter to Quit");
Console.ReadKey();
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
var middleware = new Func<AppFunc, AppFunc>(MyMiddleWare);
var otherMiddleware = new Func<AppFunc, AppFunc>(MyOtherMiddleWare);
app.Use(middleware);
app.Use(otherMiddleware);
}
public AppFunc MyMiddleWare(AppFunc next)
{
AppFunc appFunc = async (IDictionary<string, object> environment) =>
{
// Do something with the incoming request:
var response = environment["owin.ResponseBody"] as Stream;
using (var writer = new StreamWriter(response))
{
await writer.WriteAsync("<h1>Hello First Middleware</h1>");
}
// Call the next Middleware in the chain:
// await next.Invoke(environment);
};
return appFunc;
}
public AppFunc MyOtherMiddleWare(AppFunc next)
{
AppFunc appFunc = async (IDictionary<string, object> environment) =>
{
// Do something with the incoming request:
var response = environment["owin.ResponseBody"] as Stream;
using (var writer = new StreamWriter(response))
{
await writer.WriteAsync("<h1>Hello Second Middleware</h1>");
}
// Call the next Middleware in the chain:
await next.Invoke(environment);
};
return appFunc;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Owin;
using Microsoft.Owin.Hosting;
using Microsoft.Owin;
using System.IO;
namespace KatanaConsole
{
// use an alias for the OWiN AppFunc
using AppFunc = Func<IDictionary<string, object>, Task>;
class Program
{
static void Main(string[] args)
{
WebApp.Start<Startup>("http://localhost:4321");
Console.WriteLine("Server Started; Press enter to Quit");
Console.ReadKey();
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
var middleware = new Func<AppFunc, AppFunc>(MyMiddleWare);
var otherMiddleware = new Func<AppFunc, AppFunc>(MyOtherMiddleWare);
app.Use(middleware);
app.Use(otherMiddleware);
}
public AppFunc MyMiddleWare(AppFunc next)
{
AppFunc appFunc = async (IDictionary<string, object> environment) =>
{
// Do something with the incoming request:
var response = environment["owin.ResponseBody"] as Stream;
using (var writer = new StreamWriter(response))
{
await writer.WriteAsync("<h1>Hello First Middleware</h1>");
}
// Call the next Middleware in the chain:
await next.Invoke(environment);
};
return appFunc;
}
public AppFunc MyOtherMiddleWare(AppFunc next)
{
AppFunc appFunc = async (IDictionary<string, object> environment) =>
{
// Do something with the incoming request:
var response = environment["owin.ResponseBody"] as Stream;
using (var writer = new StreamWriter(response))
{
await writer.WriteAsync("<h1>Hello Second Middleware</h1>");
}
// Call the next Middleware in the chain:
await next.Invoke(environment);
};
return appFunc;
}
}
}