diff --git a/samples/MvcSample/MvcSample.k10.csproj b/samples/MvcSample/MvcSample.k10.csproj
index 2389b3f372..cc43716477 100644
--- a/samples/MvcSample/MvcSample.k10.csproj
+++ b/samples/MvcSample/MvcSample.k10.csproj
@@ -35,6 +35,7 @@
+
@@ -51,6 +52,10 @@
False
..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140125104446\lib\k10\Microsoft.AspNet.Abstractions.dll
+
+ False
+ ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140125113429\lib\k10\Microsoft.AspNet.DependencyInjection.dll
+
diff --git a/samples/MvcSample/MvcSample.net45.csproj b/samples/MvcSample/MvcSample.net45.csproj
index b154aa22e9..a5dbd5d11a 100644
--- a/samples/MvcSample/MvcSample.net45.csproj
+++ b/samples/MvcSample/MvcSample.net45.csproj
@@ -38,6 +38,18 @@
+
+ False
+ ..\..\packages\Owin.1.0\lib\net40\Owin.dll
+
+
+ False
+ ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll
+
+
+ False
+ ..\..\packages\Microsoft.Owin.Diagnostics.2.1.0\lib\net40\Microsoft.Owin.Diagnostics.dll
+
False
..\..\packages\Microsoft.AspNet.FileSystems.0.1-alpha-t140125101521\lib\net45\Microsoft.AspNet.FileSystems.dll
@@ -46,10 +58,15 @@
False
..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140125104446\lib\net45\Microsoft.AspNet.Abstractions.dll
+
+ False
+ ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140125113429\lib\net45\Microsoft.AspNet.DependencyInjection.dll
+
+
diff --git a/samples/MvcSample/OwinHttpContext.cs b/samples/MvcSample/OwinHttpContext.cs
new file mode 100644
index 0000000000..c7a0d83c05
--- /dev/null
+++ b/samples/MvcSample/OwinHttpContext.cs
@@ -0,0 +1,177 @@
+#if NET45
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using Microsoft.AspNet.Abstractions;
+using Microsoft.Owin;
+
+namespace MvcSample
+{
+ public class OwinHttpContext : HttpContext
+ {
+ private readonly IOwinContext _context;
+ private readonly HttpRequest _request;
+ private readonly HttpResponse _response;
+
+ public OwinHttpContext(IOwinContext context)
+ {
+ _context = context;
+ _request = new OwinHttpRequest(this, context.Request);
+ _response = new OwinHttpResponse(this, context.Response);
+ }
+
+ public override void Dispose()
+ {
+
+ }
+
+ public override object GetInterface(Type type)
+ {
+ return null;
+ }
+
+ public override HttpRequest Request
+ {
+ get { return _request; }
+ }
+
+ public override HttpResponse Response
+ {
+ get { return _response; }
+ }
+
+ public override void SetInterface(Type type, object instance)
+ {
+
+ }
+
+ private class OwinHttpRequest : HttpRequest
+ {
+ private HttpContext _context;
+ private IOwinRequest _request;
+
+ public OwinHttpRequest(HttpContext context, IOwinRequest request)
+ {
+ _context = context;
+ _request = request;
+ }
+
+ public override Stream Body
+ {
+ get
+ {
+ return _request.Body;
+ }
+ set
+ {
+ _request.Body = value;
+ }
+ }
+
+ public override HttpContext HttpContext
+ {
+ get { return _context; }
+ }
+
+ public override Microsoft.AspNet.Abstractions.PathString Path
+ {
+ get
+ {
+ return new Microsoft.AspNet.Abstractions.PathString(_request.Path.Value);
+ }
+ set
+ {
+ _request.Path = new Microsoft.Owin.PathString(value.Value);
+ }
+ }
+
+ public override Microsoft.AspNet.Abstractions.PathString PathBase
+ {
+ get
+ {
+ return new Microsoft.AspNet.Abstractions.PathString(_request.PathBase.Value);
+ }
+ set
+ {
+ _request.PathBase = new Microsoft.Owin.PathString(value.Value);
+ }
+ }
+
+ public override Microsoft.AspNet.Abstractions.QueryString QueryString
+ {
+ get
+ {
+ return new Microsoft.AspNet.Abstractions.QueryString(_request.QueryString.Value);
+ }
+ set
+ {
+ _request.QueryString = new Microsoft.Owin.QueryString(value.Value);
+ }
+ }
+
+ public override Uri Uri
+ {
+ get { return _request.Uri; }
+ }
+ }
+
+ private class OwinHttpResponse : HttpResponse
+ {
+ private readonly HttpContext _context;
+ private readonly IOwinResponse _response;
+
+ public OwinHttpResponse(HttpContext context, IOwinResponse response)
+ {
+ _context = context;
+ _response = response;
+ }
+
+ public override Stream Body
+ {
+ get
+ {
+ return _response.Body;
+ }
+ set
+ {
+ _response.Body = value;
+ }
+ }
+
+ public override string ContentType
+ {
+ get
+ {
+ return _response.ContentType;
+ }
+ set
+ {
+ _response.ContentType = value;
+ }
+ }
+
+ public override HttpContext HttpContext
+ {
+ get { return _context; }
+ }
+
+ public override int StatusCode
+ {
+ get
+ {
+ return _response.StatusCode;
+ }
+ set
+ {
+ _response.StatusCode = value;
+ }
+ }
+
+ public override Task WriteAsync(string data)
+ {
+ return _response.WriteAsync(data);
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/samples/MvcSample/Startup.cs b/samples/MvcSample/Startup.cs
index 9696a04544..0aeccc16d8 100644
--- a/samples/MvcSample/Startup.cs
+++ b/samples/MvcSample/Startup.cs
@@ -1,4 +1,4 @@
-#if OWIN
+#if NET45
using System;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;
@@ -32,10 +32,12 @@ namespace MvcSample
app.Run(async context =>
{
- // Pretending to be routing
- var routeData = new FakeRouteData(context);
+ var httpContext = new OwinHttpContext(context);
- await handler.ExecuteAsync(context, routeData);
+ // Pretending to be routing
+ var routeData = new FakeRouteData(httpContext);
+
+ await handler.ExecuteAsync(httpContext, routeData);
});
}
}
diff --git a/samples/MvcSample/project.json b/samples/MvcSample/project.json
index 6cd2088e65..71fad68d5b 100644
--- a/samples/MvcSample/project.json
+++ b/samples/MvcSample/project.json
@@ -1,8 +1,12 @@
{
"version" : "0.1-alpha-*",
"dependencies": {
+ "Owin": "1.0",
+ "Microsoft.Owin": "2.1.0",
+ "Microsoft.Owin.Diagnostics": "2.1.0",
"Microsoft.AspNet.FileSystems": "0.1-alpha-*",
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
+ "Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*",
"Microsoft.AspNet.Mvc" : "",
"Microsoft.AspNet.Mvc.Razor" : ""
},