From 1cb4dd920ce31851b2f9bcf60f59c1dcdb99d1c7 Mon Sep 17 00:00:00 2001 From: SteveSandersonMS Date: Fri, 1 Apr 2016 15:15:23 +0100 Subject: [PATCH] Partial migration to ASP.NET Core 1.0 RC2 (done the core packages, plus the ES2015/Webpack samples, and the Angular2Spa template). Only verified it builds/runs on .NET Core - not checked on net451. --- .../Controllers/HomeController.cs | 2 +- samples/misc/ES2015Transpilation/Startup.cs | 71 +++++++------------ .../Views/_ViewImports.cshtml | 2 +- samples/misc/ES2015Transpilation/project.json | 39 ++++++---- .../Webpack/Controllers/HomeController.cs | 2 +- samples/misc/Webpack/Startup.cs | 55 +++++--------- .../misc/Webpack/Views/_ViewImports.cshtml | 2 +- samples/misc/Webpack/project.json | 41 ++++++----- .../PrimeCacheHelper.cs | 4 +- .../project.json | 20 +++--- .../Configuration.cs | 5 +- .../project.json | 25 +++---- .../project.json | 19 +++-- .../Prerendering/PrerenderTagHelper.cs | 25 ++++--- .../Routing/SpaRouteConstraint.cs | 6 +- .../Routing/SpaRouteExtensions.cs | 4 +- .../Webpack/ConditionalProxyMiddleware.cs | 4 +- .../Webpack/WebpackDevMiddleware.cs | 10 +-- src/Microsoft.AspNet.SpaServices/project.json | 14 ++-- .../Angular2Spa/Controllers/HomeController.cs | 2 +- .../Controllers/SampleDataController.cs | 2 +- templates/Angular2Spa/Startup.cs | 62 ++++++---------- .../Angular2Spa/Views/_ViewImports.cshtml | 2 +- templates/Angular2Spa/project.json | 36 ++++++---- .../Angular2Spa/webpack.config.vendor.js | 2 +- 25 files changed, 216 insertions(+), 240 deletions(-) diff --git a/samples/misc/ES2015Transpilation/Controllers/HomeController.cs b/samples/misc/ES2015Transpilation/Controllers/HomeController.cs index 68cfa31..2d6f80e 100755 --- a/samples/misc/ES2015Transpilation/Controllers/HomeController.cs +++ b/samples/misc/ES2015Transpilation/Controllers/HomeController.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using Microsoft.AspNet.Mvc; +using Microsoft.AspNetCore.Mvc; namespace ES2015Example.Controllers { diff --git a/samples/misc/ES2015Transpilation/Startup.cs b/samples/misc/ES2015Transpilation/Startup.cs index 64a0543..0156b83 100755 --- a/samples/misc/ES2015Transpilation/Startup.cs +++ b/samples/misc/ES2015Transpilation/Startup.cs @@ -1,61 +1,28 @@ -using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Hosting; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; using Microsoft.AspNet.NodeServices; -using Microsoft.AspNet.Http; -using Microsoft.Extensions.PlatformAbstractions; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using System.IO; namespace ES2015Example { public class Startup { - public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) - { - // Setup configuration sources. - var builder = new ConfigurationBuilder() - .SetBasePath(appEnv.ApplicationBasePath) - .AddJsonFile("appsettings.json") - .AddEnvironmentVariables(); - Configuration = builder.Build(); - } - - public IConfigurationRoot Configuration { get; set; } - - // This method gets called by the runtime. + // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - // Add MVC services to the services container. services.AddMvc(); - + // Enable Node Services services.AddNodeServices(); } - // Configure is called after ConfigureServices is called. - public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, INodeServices nodeServices) + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory, IHostingEnvironment env, INodeServices nodeServices) { - loggerFactory.MinimumLevel = LogLevel.Warning; - loggerFactory.AddConsole(); - loggerFactory.AddDebug(); - - // Configure the HTTP request pipeline. - - // Add the platform handler to the request pipeline. - app.UseIISPlatformHandler(); - - // Add the following to the request pipeline only in development environment. - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - else - { - // Add Error handling middleware which catches all application specific errors and - // send the request to the following path or controller action. - app.UseExceptionHandler("/Home/Error"); - } + app.UseDeveloperExceptionPage(); // Dynamically transpile any .js files under the '/js/' directory app.Use(next => async context => { @@ -73,17 +40,27 @@ namespace ES2015Example await next.Invoke(context); }); - // Add static files to the request pipeline. app.UseStaticFiles(); - - // Add MVC to the request pipeline. + loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( name: "default", - template: "{controller}/{action?}/{id?}", - defaults: new { controller="Home", action = "Index" }); + template: "{controller=Home}/{action=Index}/{id?}"); }); } + + public static void Main(string[] args) + { + var host = new WebHostBuilder() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseDefaultHostingConfiguration(args) + .UseIISPlatformHandlerUrl() + .UseKestrel() + .UseStartup() + .Build(); + + host.Run(); + } } } diff --git a/samples/misc/ES2015Transpilation/Views/_ViewImports.cshtml b/samples/misc/ES2015Transpilation/Views/_ViewImports.cshtml index 7f1bf8c..08b930c 100755 --- a/samples/misc/ES2015Transpilation/Views/_ViewImports.cshtml +++ b/samples/misc/ES2015Transpilation/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @using ES2015Example -@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" +@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" diff --git a/samples/misc/ES2015Transpilation/project.json b/samples/misc/ES2015Transpilation/project.json index f4be8a7..e01c5b2 100755 --- a/samples/misc/ES2015Transpilation/project.json +++ b/samples/misc/ES2015Transpilation/project.json @@ -4,24 +4,35 @@ "tooling": { "defaultNamespace": "ES2015Example" }, - "dependencies": { - "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-*", - "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-*", - "Microsoft.AspNet.Mvc": "6.0.0-rc1-*", - "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-*", - "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-*", - "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-*", - "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-*", - "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-*", - "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-*", - "Microsoft.AspNet.NodeServices": "1.0.0-*" + "compilationOptions": { + "emitEntryPoint": true, + "warningsAsErrors": true, + "preserveCompilationContext": true }, - "commands": { - "web": "Microsoft.AspNet.Server.Kestrel" + "dependencies": { + "Microsoft.AspNetCore.Diagnostics": "1.0.0-*", + "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-*", + "Microsoft.AspNetCore.Mvc": "1.0.0-*", + "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0-*", + "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*", + "Microsoft.AspNetCore.StaticFiles": "1.0.0-*", + "Microsoft.Extensions.Configuration.Json": "1.0.0-*", + "Microsoft.Extensions.Logging.Console": "1.0.0-*", + "Microsoft.NETCore.Platforms": "1.0.1-*", + "Microsoft.Extensions.Logging.Debug": "1.0.0-*", + "Microsoft.AspNet.NodeServices": "1.0.0-*" }, "frameworks": { "dnx451": {}, - "dnxcore50": {} + "netstandardapp1.5": { + "imports": [ + "dnxcore50", + "portable-net451+win8" + ], + "dependencies": { + "NETStandard.Library": "1.5.0-*" + } + } }, "exclude": [ "wwwroot", diff --git a/samples/misc/Webpack/Controllers/HomeController.cs b/samples/misc/Webpack/Controllers/HomeController.cs index a241d08..136e94e 100755 --- a/samples/misc/Webpack/Controllers/HomeController.cs +++ b/samples/misc/Webpack/Controllers/HomeController.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNet.Mvc; +using Microsoft.AspNetCore.Mvc; namespace Webpack.Controllers { diff --git a/samples/misc/Webpack/Startup.cs b/samples/misc/Webpack/Startup.cs index c12be2d..443946f 100755 --- a/samples/misc/Webpack/Startup.cs +++ b/samples/misc/Webpack/Startup.cs @@ -1,52 +1,25 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Hosting; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; using Microsoft.AspNet.SpaServices.Webpack; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using System.IO; namespace Webpack { public class Startup { - public Startup(IHostingEnvironment env) - { - // Set up configuration sources. - var builder = new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .AddEnvironmentVariables(); - Configuration = builder.Build(); - } - - public IConfigurationRoot Configuration { get; set; } - // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - // Add framework services. services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory, IHostingEnvironment env) { - loggerFactory.AddConsole(Configuration.GetSection("Logging")); - loggerFactory.AddDebug(); - - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - else - { - app.UseExceptionHandler("/Home/Error"); - } - - app.UseIISPlatformHandler(); + app.UseDeveloperExceptionPage(); if (env.IsDevelopment()) { app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions { @@ -55,7 +28,7 @@ namespace Webpack } app.UseStaticFiles(); - + loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( @@ -64,7 +37,17 @@ namespace Webpack }); } - // Entry point for the application. - public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run(args); + public static void Main(string[] args) + { + var host = new WebHostBuilder() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseDefaultHostingConfiguration(args) + .UseIISPlatformHandlerUrl() + .UseKestrel() + .UseStartup() + .Build(); + + host.Run(); + } } } diff --git a/samples/misc/Webpack/Views/_ViewImports.cshtml b/samples/misc/Webpack/Views/_ViewImports.cshtml index c6ab37e..de3b5a1 100755 --- a/samples/misc/Webpack/Views/_ViewImports.cshtml +++ b/samples/misc/Webpack/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @using Webpack -@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" +@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" diff --git a/samples/misc/Webpack/project.json b/samples/misc/Webpack/project.json index 4858ab3..66cff29 100755 --- a/samples/misc/Webpack/project.json +++ b/samples/misc/Webpack/project.json @@ -1,25 +1,25 @@ { "version": "1.0.0-*", "compilationOptions": { - "emitEntryPoint": true + "emitEntryPoint": true, + "warningsAsErrors": true, + "preserveCompilationContext": true }, "tooling": { "defaultNamespace": "Webpack" }, "dependencies": { - "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final", - "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", - "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", - "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", - "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", - "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", - "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final", - "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final", - "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", - "Microsoft.Extensions.Logging": "1.0.0-rc1-final", - "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final", - "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final", + "Microsoft.AspNetCore.Diagnostics": "1.0.0-*", + "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-*", + "Microsoft.AspNetCore.Mvc": "1.0.0-*", + "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0-*", + "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*", + "Microsoft.AspNetCore.StaticFiles": "1.0.0-*", + "Microsoft.Extensions.Configuration.Json": "1.0.0-*", + "Microsoft.Extensions.Logging.Console": "1.0.0-*", + "Microsoft.NETCore.Platforms": "1.0.1-*", + "Microsoft.Extensions.Logging.Debug": "1.0.0-*", "Microsoft.AspNet.SpaServices": "1.0.0-*" }, @@ -29,7 +29,15 @@ "frameworks": { "dnx451": {}, - "dnxcore50": {} + "netstandardapp1.5": { + "imports": [ + "dnxcore50", + "portable-net451+win8" + ], + "dependencies": { + "NETStandard.Library": "1.5.0-*" + } + } }, "exclude": [ @@ -46,10 +54,7 @@ ], "scripts": { "prepublish": [ - "npm install", - "bower install", - "gulp clean", - "gulp min" + "npm install" ] } } diff --git a/src/Microsoft.AspNet.AngularServices/PrimeCacheHelper.cs b/src/Microsoft.AspNet.AngularServices/PrimeCacheHelper.cs index 6c7c66d..b802919 100644 --- a/src/Microsoft.AspNet.AngularServices/PrimeCacheHelper.cs +++ b/src/Microsoft.AspNet.AngularServices/PrimeCacheHelper.cs @@ -2,7 +2,7 @@ using System; using System.Net; using System.Net.Http; using System.Threading.Tasks; -using Microsoft.AspNet.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Extensions.Logging; using Newtonsoft.Json; @@ -25,7 +25,7 @@ namespace Microsoft.AspNet.AngularServices { var responseBody = await response.Content.ReadAsStringAsync(); return new HtmlString(FormatAsScript(url, response.StatusCode, responseBody)); } catch (Exception ex) { - var logger = (ILogger)html.ViewContext.HttpContext.ApplicationServices.GetService(typeof (ILogger)); + var logger = (ILogger)html.ViewContext.HttpContext.RequestServices.GetService(typeof (ILogger)); if (logger != null) { logger.LogWarning("Error priming cache for URL: " + url, ex); } diff --git a/src/Microsoft.AspNet.AngularServices/project.json b/src/Microsoft.AspNet.AngularServices/project.json index ad60df8..be7147f 100644 --- a/src/Microsoft.AspNet.AngularServices/project.json +++ b/src/Microsoft.AspNet.AngularServices/project.json @@ -13,21 +13,19 @@ "defaultNamespace": "Microsoft.AspNet.AngularServices" }, "frameworks": { - "net451": { }, - "dotnet5.4": { + "dnx451": {}, + "netstandard1.5": { + "imports": [ + "dotnet5.6", + "portable-net451+win8" + ], "dependencies": { - "Microsoft.CSharp": "4.0.1-beta-*", - "System.Collections": "4.0.11-beta-*", - "System.Linq": "4.0.1-beta-*", - "System.Net.Http": "4.0.1-beta-*", - "System.Runtime": "4.0.21-beta-*", - "System.Threading": "4.0.11-beta-*" } } }, "dependencies": { - "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", - "Microsoft.AspNet.NodeServices": "1.0.0-alpha7", - "Microsoft.AspNet.SpaServices": "1.0.0-alpha7-1" + "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0-*", + "Microsoft.AspNet.NodeServices": "1.0.0-*", + "Microsoft.AspNet.SpaServices": "1.0.0-*" } } diff --git a/src/Microsoft.AspNet.NodeServices/Configuration.cs b/src/Microsoft.AspNet.NodeServices/Configuration.cs index 4e901de..415ca5d 100644 --- a/src/Microsoft.AspNet.NodeServices/Configuration.cs +++ b/src/Microsoft.AspNet.NodeServices/Configuration.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.PlatformAbstractions; +using Microsoft.AspNetCore.Hosting; namespace Microsoft.AspNet.NodeServices { public static class Configuration { @@ -15,9 +16,9 @@ namespace Microsoft.AspNet.NodeServices { public static void AddNodeServices(this IServiceCollection serviceCollection, NodeServicesOptions options) { serviceCollection.AddSingleton(typeof(INodeServices), (serviceProvider) => { - var appEnv = serviceProvider.GetRequiredService(); + var hostEnv = serviceProvider.GetRequiredService(); if (string.IsNullOrEmpty(options.ProjectPath)) { - options.ProjectPath = appEnv.ApplicationBasePath; + options.ProjectPath = hostEnv.ContentRootPath; } return CreateNodeServices(options); }); diff --git a/src/Microsoft.AspNet.NodeServices/project.json b/src/Microsoft.AspNet.NodeServices/project.json index 3080c8b..58106a0 100644 --- a/src/Microsoft.AspNet.NodeServices/project.json +++ b/src/Microsoft.AspNet.NodeServices/project.json @@ -10,23 +10,24 @@ "url": "git://github.com/aspnet/nodeservices" }, "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", - "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final", - "Newtonsoft.Json": "8.0.1-beta3", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-*", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*", + "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0-*", + "Newtonsoft.Json": "8.0.3", "System.Net.Http": "4.0.1-beta-*" }, "frameworks": { - "net451": { }, - "dotnet5.4": { + "dnx451": {}, + "netstandard1.5": { + "imports": [ + "dotnet5.6", + "portable-net451+win8" + ], "dependencies": { - "Microsoft.CSharp": "4.0.1-beta-*", - "System.Collections": "4.0.11-beta-*", - "System.Console": "4.0.0-beta-*", + "System.Text.Encoding": "4.0.11-*", + "System.Text.RegularExpressions": "4.0.10", "System.Diagnostics.Process": "4.1.0-beta-*", - "System.IO.FileSystem": "4.0.1-beta-*", - "System.Linq": "4.0.1-beta-*", - "System.Text.RegularExpressions": "4.0.11-beta-*", - "System.Threading": "4.0.11-beta-*" + "System.Console": "4.0.0-beta-*" } } }, diff --git a/src/Microsoft.AspNet.ReactServices/project.json b/src/Microsoft.AspNet.ReactServices/project.json index d346136..dfe0b5e 100644 --- a/src/Microsoft.AspNet.ReactServices/project.json +++ b/src/Microsoft.AspNet.ReactServices/project.json @@ -13,19 +13,18 @@ "defaultNamespace": "Microsoft.AspNet.ReactServices" }, "dependencies": { - "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", - "Microsoft.AspNet.NodeServices": "1.0.0-alpha7", - "Microsoft.AspNet.SpaServices": "1.0.0-alpha7-1" + "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0-*", + "Microsoft.AspNet.NodeServices": "1.0.0-*", + "Microsoft.AspNet.SpaServices": "1.0.0-*" }, "frameworks": { - "net451": { }, - "dotnet5.4": { + "dnx451": {}, + "netstandard1.5": { + "imports": [ + "dotnet5.6", + "portable-net451+win8" + ], "dependencies": { - "Microsoft.CSharp": "4.0.1-beta-*", - "System.Collections": "4.0.11-beta-*", - "System.Linq": "4.0.1-beta-*", - "System.Runtime": "4.0.21-beta-*", - "System.Threading": "4.0.11-beta-*" } } } diff --git a/src/Microsoft.AspNet.SpaServices/Prerendering/PrerenderTagHelper.cs b/src/Microsoft.AspNet.SpaServices/Prerendering/PrerenderTagHelper.cs index ca810a5..d8b012e 100644 --- a/src/Microsoft.AspNet.SpaServices/Prerendering/PrerenderTagHelper.cs +++ b/src/Microsoft.AspNet.SpaServices/Prerendering/PrerenderTagHelper.cs @@ -1,10 +1,13 @@ using System; using System.Text; using System.Threading.Tasks; -using Microsoft.AspNet.Http; -using Microsoft.AspNet.Http.Extensions; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNet.NodeServices; -using Microsoft.AspNet.Razor.TagHelpers; +using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.PlatformAbstractions; using Newtonsoft.Json; @@ -28,16 +31,18 @@ namespace Microsoft.AspNet.SpaServices.Prerendering [HtmlAttributeName(PrerenderWebpackConfigAttributeName)] public string WebpackConfigPath { get; set; } + [HtmlAttributeNotBound] + [ViewContext] + public ViewContext ViewContext { get; set; } + private string applicationBasePath; - private IHttpContextAccessor contextAccessor; private INodeServices nodeServices; - public PrerenderTagHelper(IServiceProvider serviceProvider, IHttpContextAccessor contextAccessor) + public PrerenderTagHelper(IServiceProvider serviceProvider) { - var appEnv = (IApplicationEnvironment)serviceProvider.GetService(typeof(IApplicationEnvironment)); - this.contextAccessor = contextAccessor; + var hostEnv = (IHostingEnvironment)serviceProvider.GetService(typeof (IHostingEnvironment)); this.nodeServices = (INodeServices)serviceProvider.GetService(typeof (INodeServices)) ?? fallbackNodeServices; - this.applicationBasePath = appEnv.ApplicationBasePath; + this.applicationBasePath = hostEnv.ContentRootPath; // Consider removing the following. Having it means you can get away with not putting app.AddNodeServices() // in your startup file, but then again it might be confusing that you don't need to. @@ -51,7 +56,7 @@ namespace Microsoft.AspNet.SpaServices.Prerendering public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { - var request = this.contextAccessor.HttpContext.Request; + var request = this.ViewContext.HttpContext.Request; var result = await Prerenderer.RenderToString( applicationBasePath: this.applicationBasePath, nodeServices: this.nodeServices, @@ -59,7 +64,7 @@ namespace Microsoft.AspNet.SpaServices.Prerendering exportName = this.ExportName, webpackConfig = this.WebpackConfigPath }, - requestAbsoluteUrl: UriHelper.GetEncodedUrl(this.contextAccessor.HttpContext.Request), + requestAbsoluteUrl: UriHelper.GetEncodedUrl(request), requestPathAndQuery: request.Path + request.QueryString.Value); output.Content.SetHtmlContent(result.Html); diff --git a/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteConstraint.cs b/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteConstraint.cs index 51af99b..4d4c6c3 100644 --- a/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteConstraint.cs +++ b/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteConstraint.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -using Microsoft.AspNet.Http; -using Microsoft.AspNet.Routing; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; namespace Microsoft.AspNet.SpaServices { @@ -17,7 +17,7 @@ namespace Microsoft.AspNet.SpaServices this.clientRouteTokenName = clientRouteTokenName; } - public bool Match(HttpContext httpContext, IRouter route, string routeKey, IDictionary values, RouteDirection routeDirection) + public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) { var clientRouteValue = (values[this.clientRouteTokenName] as string) ?? string.Empty; return !HasDotInLastSegment(clientRouteValue); diff --git a/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteExtensions.cs b/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteExtensions.cs index 3e86986..ac7c027 100644 --- a/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteExtensions.cs +++ b/src/Microsoft.AspNet.SpaServices/Routing/SpaRouteExtensions.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; -using Microsoft.AspNet.Routing; +using Microsoft.AspNetCore.Routing; using Microsoft.AspNet.SpaServices; // Putting in this namespace so it's always available whenever MapRoute is -namespace Microsoft.AspNet.Builder +namespace Microsoft.AspNetCore.Builder { public static class SpaRouteExtensions { diff --git a/src/Microsoft.AspNet.SpaServices/Webpack/ConditionalProxyMiddleware.cs b/src/Microsoft.AspNet.SpaServices/Webpack/ConditionalProxyMiddleware.cs index 95a693d..6575409 100644 --- a/src/Microsoft.AspNet.SpaServices/Webpack/ConditionalProxyMiddleware.cs +++ b/src/Microsoft.AspNet.SpaServices/Webpack/ConditionalProxyMiddleware.cs @@ -3,8 +3,8 @@ using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; -using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Http; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; namespace Microsoft.AspNet.SpaServices.Webpack { diff --git a/src/Microsoft.AspNet.SpaServices/Webpack/WebpackDevMiddleware.cs b/src/Microsoft.AspNet.SpaServices/Webpack/WebpackDevMiddleware.cs index 5d9f930..fe0b97c 100644 --- a/src/Microsoft.AspNet.SpaServices/Webpack/WebpackDevMiddleware.cs +++ b/src/Microsoft.AspNet.SpaServices/Webpack/WebpackDevMiddleware.cs @@ -3,11 +3,13 @@ using System.IO; using System.Threading.Tasks; using Microsoft.AspNet.NodeServices; using Microsoft.AspNet.SpaServices.Webpack; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.PlatformAbstractions; using Newtonsoft.Json; // Putting in this namespace so it's always available whenever MapRoute is -namespace Microsoft.AspNet.Builder +namespace Microsoft.AspNetCore.Builder { public static class WebpackDevMiddleware { @@ -30,10 +32,10 @@ namespace Microsoft.AspNet.Builder // because it must *not* restart when files change (if it did, you'd lose all the benefits of Webpack // middleware). And since this is a dev-time-only feature, it doesn't matter if the default transport isn't // as fast as some theoretical future alternative. - var appEnv = (IApplicationEnvironment)appBuilder.ApplicationServices.GetService(typeof(IApplicationEnvironment)); + var hostEnv = (IHostingEnvironment)appBuilder.ApplicationServices.GetService(typeof (IHostingEnvironment)); var nodeServices = Configuration.CreateNodeServices(new NodeServicesOptions { HostingModel = NodeHostingModel.Http, - ProjectPath = appEnv.ApplicationBasePath, + ProjectPath = hostEnv.ContentRootPath, WatchFileExtensions = new string[] {} // Don't watch anything }); @@ -43,7 +45,7 @@ namespace Microsoft.AspNet.Builder // Tell Node to start the server hosting webpack-dev-middleware var devServerOptions = new { - webpackConfigPath = Path.Combine(appEnv.ApplicationBasePath, options.ConfigFile ?? DefaultConfigFile), + webpackConfigPath = Path.Combine(hostEnv.ContentRootPath, options.ConfigFile ?? DefaultConfigFile), suppliedOptions = options }; var devServerInfo = nodeServices.InvokeExport(nodeScript.FileName, "createWebpackDevServer", JsonConvert.SerializeObject(devServerOptions)).Result; diff --git a/src/Microsoft.AspNet.SpaServices/project.json b/src/Microsoft.AspNet.SpaServices/project.json index 542668f..8c405fd 100644 --- a/src/Microsoft.AspNet.SpaServices/project.json +++ b/src/Microsoft.AspNet.SpaServices/project.json @@ -13,13 +13,17 @@ "projectUrl": "", "licenseUrl": "", "dependencies": { - "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", - "Microsoft.AspNet.Routing": "1.0.0-rc1-final", - "Microsoft.AspNet.NodeServices": "1.0.0-alpha7" + "Microsoft.AspNetCore.Mvc": "1.0.0-*", + "Microsoft.AspNetCore.Routing": "1.0.0-*", + "Microsoft.AspNet.NodeServices": "1.0.0-*" }, "frameworks": { - "net451": { }, - "dotnet5.4": { + "dnx451": {}, + "netstandard1.5": { + "imports": [ + "dotnet5.6", + "portable-net451+win8" + ], "dependencies": { } } diff --git a/templates/Angular2Spa/Controllers/HomeController.cs b/templates/Angular2Spa/Controllers/HomeController.cs index 7c59f1e..9d75da8 100755 --- a/templates/Angular2Spa/Controllers/HomeController.cs +++ b/templates/Angular2Spa/Controllers/HomeController.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNet.Mvc; +using Microsoft.AspNetCore.Mvc; namespace WebApplicationBasic.Controllers { diff --git a/templates/Angular2Spa/Controllers/SampleDataController.cs b/templates/Angular2Spa/Controllers/SampleDataController.cs index 45fb312..1f46d12 100644 --- a/templates/Angular2Spa/Controllers/SampleDataController.cs +++ b/templates/Angular2Spa/Controllers/SampleDataController.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNet.Mvc; +using Microsoft.AspNetCore.Mvc; namespace WebApplicationBasic.Controllers { diff --git a/templates/Angular2Spa/Startup.cs b/templates/Angular2Spa/Startup.cs index 6bb0d2c..ef18627 100755 --- a/templates/Angular2Spa/Startup.cs +++ b/templates/Angular2Spa/Startup.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Hosting; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; using Microsoft.AspNet.SpaServices.Webpack; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Newtonsoft.Json.Serialization; @@ -14,54 +15,25 @@ namespace WebApplicationBasic { public class Startup { - public Startup(IHostingEnvironment env) - { - // Set up configuration sources. - var builder = new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .AddEnvironmentVariables(); - Configuration = builder.Build(); - } - - public IConfigurationRoot Configuration { get; set; } - // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - // Add framework services. - services.AddMvc().AddJsonOptions(options => - { - options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); - }); + services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory, IHostingEnvironment env) { - loggerFactory.AddConsole(Configuration.GetSection("Logging")); - loggerFactory.AddDebug(); + app.UseDeveloperExceptionPage(); - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - else - { - app.UseExceptionHandler("/Home/Error"); - } - - app.UseIISPlatformHandler(); - - if (env.IsDevelopment()) - { - app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions - { + if (env.IsDevelopment()) { + app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions { HotModuleReplacement = true }); } app.UseStaticFiles(); - + loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( @@ -74,7 +46,17 @@ namespace WebApplicationBasic }); } - // Entry point for the application. - public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run(args); + public static void Main(string[] args) + { + var host = new WebHostBuilder() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseDefaultHostingConfiguration(args) + .UseIISPlatformHandlerUrl() + .UseKestrel() + .UseStartup() + .Build(); + + host.Run(); + } } } diff --git a/templates/Angular2Spa/Views/_ViewImports.cshtml b/templates/Angular2Spa/Views/_ViewImports.cshtml index fc1eb58..5ece85f 100755 --- a/templates/Angular2Spa/Views/_ViewImports.cshtml +++ b/templates/Angular2Spa/Views/_ViewImports.cshtml @@ -1,3 +1,3 @@ @using WebApplicationBasic -@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" +@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" @addTagHelper "*, Microsoft.AspNet.SpaServices" diff --git a/templates/Angular2Spa/project.json b/templates/Angular2Spa/project.json index 129cca7..cfa9aa8 100755 --- a/templates/Angular2Spa/project.json +++ b/templates/Angular2Spa/project.json @@ -1,25 +1,25 @@ { "version": "1.0.0-*", "compilationOptions": { - "emitEntryPoint": true + "emitEntryPoint": true, + "warningsAsErrors": true, + "preserveCompilationContext": true }, "tooling": { "defaultNamespace": "WebApplicationBasic" }, "dependencies": { - "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final", - "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", - "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", - "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", - "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", - "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", - "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final", - "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final", - "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", - "Microsoft.Extensions.Logging": "1.0.0-rc1-final", - "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final", - "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final", + "Microsoft.AspNetCore.Diagnostics": "1.0.0-*", + "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-*", + "Microsoft.AspNetCore.Mvc": "1.0.0-*", + "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0-*", + "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*", + "Microsoft.AspNetCore.StaticFiles": "1.0.0-*", + "Microsoft.Extensions.Configuration.Json": "1.0.0-*", + "Microsoft.Extensions.Logging.Console": "1.0.0-*", + "Microsoft.NETCore.Platforms": "1.0.1-*", + "Microsoft.Extensions.Logging.Debug": "1.0.0-*", "Microsoft.AspNet.AngularServices": "1.0.0-*" }, @@ -29,7 +29,15 @@ "frameworks": { "dnx451": {}, - "dnxcore50": {} + "netstandardapp1.5": { + "imports": [ + "dnxcore50", + "portable-net451+win8" + ], + "dependencies": { + "NETStandard.Library": "1.5.0-*" + } + } }, "exclude": [ diff --git a/templates/Angular2Spa/webpack.config.vendor.js b/templates/Angular2Spa/webpack.config.vendor.js index 4def39e..708eae5 100644 --- a/templates/Angular2Spa/webpack.config.vendor.js +++ b/templates/Angular2Spa/webpack.config.vendor.js @@ -15,7 +15,7 @@ module.exports = { ] }, entry: { - vendor: ['angular2/bundles/angular2-polyfills.js', 'bootstrap', 'bootstrap/dist/css/bootstrap.css', 'style-loader', 'jquery', 'angular2/core', 'angular2/common', 'angular2/http', 'angular2/router', 'angular2/platform/browser'] + vendor: ['angular2-universal-polyfills', 'bootstrap', 'bootstrap/dist/css/bootstrap.css', 'style-loader', 'jquery', 'angular2/core', 'angular2/common', 'angular2/http', 'angular2/router', 'angular2/platform/browser'] }, output: { path: path.join(__dirname, 'wwwroot', 'dist'),