diff --git a/Mvc.sln b/Mvc.sln
index f5b4c9e0f9..3620af64f9 100644
--- a/Mvc.sln
+++ b/Mvc.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.21806.0
+VisualStudioVersion = 14.0.21722.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}"
EndProject
@@ -41,6 +41,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ActivatorWebSite", "test\We
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "InlineConstraintsWebSite", "test\WebSites\InlineConstraintsWebSite\InlineConstraintsWebSite.kproj", "{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}"
EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "AutofacWebSite", "test\WebSites\AutofacWebSite\AutofacWebSite.kproj", "{07C0E921-FCBB-458C-AC11-3D01CE68B16B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -201,6 +203,16 @@ Global
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE}.Release|x86.ActiveCfg = Release|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -222,5 +234,6 @@ Global
{34DF1487-12C6-476C-BE0A-F31DF1939AE5} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{DB79BCBA-9538-4A53-87D9-77728E2BAA39} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
{EA34877F-1AC1-42B7-B4E6-15A093F40CAE} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
+ {07C0E921-FCBB-458C-AC11-3D01CE68B16B} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C}
EndGlobalSection
EndGlobal
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/DependencyResolverTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/DependencyResolverTests.cs
new file mode 100644
index 0000000000..20f43c18a6
--- /dev/null
+++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/DependencyResolverTests.cs
@@ -0,0 +1,39 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using AutofacWebSite;
+using Microsoft.AspNet.Builder;
+using Microsoft.AspNet.Http;
+using Microsoft.AspNet.TestHost;
+using Xunit;
+
+namespace Microsoft.AspNet.Mvc.FunctionalTests
+{
+ public class DependencyResolverTests
+ {
+ [Theory]
+ [InlineData("http://localhost/di", "
Builder Output: Hello from builder.
")]
+ [InlineData("http://localhost/basic", "Hello From Basic View
")]
+ public async Task AutofacDIContainerCanUseMvc(string url, string expectedResponseBody)
+ {
+ // Arrange
+ var provider = TestHelper.CreateServices("AutofacWebSite");
+ Action app = new Startup().Configure;
+ TestServer server = null;
+ HttpResponse response = null;
+
+ // Act & Assert
+ await Assert.DoesNotThrowAsync(async () =>
+ {
+ // This essentially calls into the Startup.Configuration method
+ server = TestServer.Create(provider, app);
+
+ // Make a request to start resolving DI pieces
+ response = await server.Handler.GetAsync(url);
+ });
+
+ var actualResponseBody = new StreamReader(response.Body).ReadToEnd();
+ Assert.Equal(expectedResponseBody, actualResponseBody);
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/Microsoft.AspNet.Mvc.FunctionalTests.kproj b/test/Microsoft.AspNet.Mvc.FunctionalTests/Microsoft.AspNet.Mvc.FunctionalTests.kproj
index 6285f25067..cfa99bcd09 100644
--- a/test/Microsoft.AspNet.Mvc.FunctionalTests/Microsoft.AspNet.Mvc.FunctionalTests.kproj
+++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/Microsoft.AspNet.Mvc.FunctionalTests.kproj
@@ -31,6 +31,7 @@
+
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json b/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json
index 1df30bf1d6..73f3a9a6a0 100644
--- a/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json
+++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/project.json
@@ -6,6 +6,7 @@
"BasicWebSite": "",
"ActivatorWebSite": "",
"InlineConstraintsWebSite": "",
+ "AutofacWebSite": "",
"Microsoft.AspNet.TestHost": "1.0.0-*",
"Microsoft.Framework.Runtime.Interfaces": "1.0.0-*",
"Xunit.KRunner": "1.0.0-*",
diff --git a/test/WebSites/AutofacWebSite/AutofacWebSite.kproj b/test/WebSites/AutofacWebSite/AutofacWebSite.kproj
new file mode 100644
index 0000000000..95ea09b874
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/AutofacWebSite.kproj
@@ -0,0 +1,40 @@
+
+
+
+ 12.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ 07c0e921-fcbb-458c-ac11-3d01ce68b16b
+ Web
+
+
+ ConsoleDebugger
+
+
+ WebDebugger
+
+
+
+
+
+
+ 2.0
+
+
+ 38823
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/WebSites/AutofacWebSite/Controllers/BasicController.cs b/test/WebSites/AutofacWebSite/Controllers/BasicController.cs
new file mode 100644
index 0000000000..968295645f
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/Controllers/BasicController.cs
@@ -0,0 +1,12 @@
+using Microsoft.AspNet.Mvc;
+
+namespace AutofacWebSite.Controllers
+{
+ public class BasicController : Controller
+ {
+ public IActionResult Index()
+ {
+ return View();
+ }
+ }
+}
diff --git a/test/WebSites/AutofacWebSite/Controllers/DIController.cs b/test/WebSites/AutofacWebSite/Controllers/DIController.cs
new file mode 100644
index 0000000000..bc2be22ed0
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/Controllers/DIController.cs
@@ -0,0 +1,19 @@
+using Microsoft.AspNet.Mvc;
+
+namespace AutofacWebSite.Controllers
+{
+ public class DIController : Controller
+ {
+ public DIController(HelloWorldBuilder builder)
+ {
+ Builder = builder;
+ }
+
+ public HelloWorldBuilder Builder { get; private set; }
+
+ public IActionResult Index()
+ {
+ return View(model: Builder.Build());
+ }
+ }
+}
diff --git a/test/WebSites/AutofacWebSite/HelloWorldBuilder.cs b/test/WebSites/AutofacWebSite/HelloWorldBuilder.cs
new file mode 100644
index 0000000000..c7665d3ddd
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/HelloWorldBuilder.cs
@@ -0,0 +1,10 @@
+namespace AutofacWebSite
+{
+ public class HelloWorldBuilder
+ {
+ public string Build()
+ {
+ return "Hello from builder.";
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/WebSites/AutofacWebSite/Startup.cs b/test/WebSites/AutofacWebSite/Startup.cs
new file mode 100644
index 0000000000..c39aff22ce
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/Startup.cs
@@ -0,0 +1,35 @@
+using System;
+using Autofac;
+using Microsoft.AspNet.Builder;
+using Microsoft.AspNet.Routing;
+using Microsoft.Framework.DependencyInjection;
+using Microsoft.Framework.DependencyInjection.Autofac;
+
+namespace AutofacWebSite
+{
+ public class Startup
+ {
+ public void Configure(IBuilder app)
+ {
+ app.UseServices(services => {
+ services.AddMvc();
+ services.AddTransient();
+
+ var builder = new ContainerBuilder();
+ AutofacRegistration.Populate(builder,
+ services,
+ fallbackServiceProvider: app.ApplicationServices);
+
+ var container = builder.Build();
+
+ return container.Resolve();
+ });
+
+ app.UseMvc(routes =>
+ {
+ // This default route is for running the project directly.
+ routes.MapRoute("default", "{controller=DI}/{action=Index}");
+ });
+ }
+ }
+}
diff --git a/test/WebSites/AutofacWebSite/Views/Basic/Index.cshtml b/test/WebSites/AutofacWebSite/Views/Basic/Index.cshtml
new file mode 100644
index 0000000000..2457ac3a83
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/Views/Basic/Index.cshtml
@@ -0,0 +1 @@
+Hello From Basic View
\ No newline at end of file
diff --git a/test/WebSites/AutofacWebSite/Views/DI/Index.cshtml b/test/WebSites/AutofacWebSite/Views/DI/Index.cshtml
new file mode 100644
index 0000000000..d4c4236f10
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/Views/DI/Index.cshtml
@@ -0,0 +1,3 @@
+@model string
+
+Builder Output: @Model
\ No newline at end of file
diff --git a/test/WebSites/AutofacWebSite/project.json b/test/WebSites/AutofacWebSite/project.json
new file mode 100644
index 0000000000..e104b3b06c
--- /dev/null
+++ b/test/WebSites/AutofacWebSite/project.json
@@ -0,0 +1,12 @@
+{
+ "dependencies": {
+ "Microsoft.AspNet.Server.IIS": "1.0.0-*",
+ "Microsoft.AspNet.Mvc": "",
+ "Microsoft.Framework.DependencyInjection.Autofac": "1.0.0-*",
+ "Autofac": "3.3.0"
+ },
+ "configurations" : {
+ "net45" : { },
+ "k10" : { }
+ }
+}