From e898ac974aa94e488a4337d3ad018c2823fd429e Mon Sep 17 00:00:00 2001 From: SteveSandersonMS Date: Fri, 8 Apr 2016 13:07:34 +0100 Subject: [PATCH] Update React Music Store to RC2 --- .../MusicStore/Apis/AlbumsApiController.cs | 10 +-- .../MusicStore/Apis/ArtistsApiController.cs | 4 +- .../MusicStore/Apis/GenresApiController.cs | 4 +- .../Apis/Models/MusicStoreContext.cs | 6 +- .../MusicStore/Apis/Models/SampleData.cs | 8 +- .../MusicStore/Apis/Models/ShoppingCart.cs | 4 +- .../MusicStore/Controllers/HomeController.cs | 2 +- .../Infrastructure/NoCacheAttribute.cs | 4 +- .../MusicStore/Infrastructure/PagedList.cs | 2 +- .../Infrastructure/SortExpression.cs | 2 +- samples/react/MusicStore/Startup.cs | 90 +++++++++---------- .../MusicStore/Views/_ViewImports.cshtml | 2 +- samples/react/MusicStore/appsettings.json | 11 --- samples/react/MusicStore/package.json | 3 + samples/react/MusicStore/project.json | 41 +++++---- 15 files changed, 93 insertions(+), 100 deletions(-) delete mode 100755 samples/react/MusicStore/appsettings.json diff --git a/samples/react/MusicStore/Apis/AlbumsApiController.cs b/samples/react/MusicStore/Apis/AlbumsApiController.cs index 4171a91..425061c 100644 --- a/samples/react/MusicStore/Apis/AlbumsApiController.cs +++ b/samples/react/MusicStore/Apis/AlbumsApiController.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNet.Authorization; -using Microsoft.AspNet.Mvc; -using Microsoft.Data.Entity; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using AutoMapper; using MusicStore.Models; using MusicStore.Infrastructure; @@ -97,7 +97,7 @@ namespace MusicStore.Apis if (!ModelState.IsValid) { // Return the model errors - return HttpBadRequest(ModelState); + return BadRequest(ModelState); } // Save the changes to the DB @@ -119,7 +119,7 @@ namespace MusicStore.Apis if (!ModelState.IsValid) { // Return the model errors - return HttpBadRequest(ModelState); + return BadRequest(ModelState); } var dbAlbum = await _storeContext.Albums.SingleOrDefaultAsync(a => a.AlbumId == albumId); diff --git a/samples/react/MusicStore/Apis/ArtistsApiController.cs b/samples/react/MusicStore/Apis/ArtistsApiController.cs index b698b39..f3568ae 100644 --- a/samples/react/MusicStore/Apis/ArtistsApiController.cs +++ b/samples/react/MusicStore/Apis/ArtistsApiController.cs @@ -1,8 +1,8 @@ using System; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNet.Mvc; -using Microsoft.Data.Entity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using MusicStore.Models; namespace MusicStore.Apis diff --git a/samples/react/MusicStore/Apis/GenresApiController.cs b/samples/react/MusicStore/Apis/GenresApiController.cs index 830340d..338ca2f 100644 --- a/samples/react/MusicStore/Apis/GenresApiController.cs +++ b/samples/react/MusicStore/Apis/GenresApiController.cs @@ -1,7 +1,7 @@ using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNet.Mvc; -using Microsoft.Data.Entity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using MusicStore.Models; using MusicStore.Infrastructure; diff --git a/samples/react/MusicStore/Apis/Models/MusicStoreContext.cs b/samples/react/MusicStore/Apis/Models/MusicStoreContext.cs index 300bea4..aee7aed 100644 --- a/samples/react/MusicStore/Apis/Models/MusicStoreContext.cs +++ b/samples/react/MusicStore/Apis/Models/MusicStoreContext.cs @@ -1,5 +1,5 @@ -using Microsoft.AspNet.Identity.EntityFramework; -using Microsoft.Data.Entity; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; namespace MusicStore.Models { @@ -7,7 +7,7 @@ namespace MusicStore.Models public class MusicStoreContext : IdentityDbContext { - public MusicStoreContext() + public MusicStoreContext(DbContextOptions options) : base(options) { } diff --git a/samples/react/MusicStore/Apis/Models/SampleData.cs b/samples/react/MusicStore/Apis/Models/SampleData.cs index ca81996..b1d98a7 100644 --- a/samples/react/MusicStore/Apis/Models/SampleData.cs +++ b/samples/react/MusicStore/Apis/Models/SampleData.cs @@ -3,11 +3,11 @@ using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; -using Microsoft.AspNet.Identity; -using Microsoft.AspNet.Identity.EntityFramework; -using Microsoft.Data.Entity; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.OptionsModel; +using Microsoft.Extensions.Options; namespace MusicStore.Models { diff --git a/samples/react/MusicStore/Apis/Models/ShoppingCart.cs b/samples/react/MusicStore/Apis/Models/ShoppingCart.cs index 3e42600..1d2465a 100644 --- a/samples/react/MusicStore/Apis/Models/ShoppingCart.cs +++ b/samples/react/MusicStore/Apis/Models/ShoppingCart.cs @@ -1,5 +1,5 @@ -using Microsoft.AspNet.Http; -using Microsoft.Data.Entity; +using Microsoft.AspNetCore.Http; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; diff --git a/samples/react/MusicStore/Controllers/HomeController.cs b/samples/react/MusicStore/Controllers/HomeController.cs index d6a55c6..1048e08 100755 --- a/samples/react/MusicStore/Controllers/HomeController.cs +++ b/samples/react/MusicStore/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 MusicStore.Controllers { diff --git a/samples/react/MusicStore/Infrastructure/NoCacheAttribute.cs b/samples/react/MusicStore/Infrastructure/NoCacheAttribute.cs index d4b73c6..856023a 100644 --- a/samples/react/MusicStore/Infrastructure/NoCacheAttribute.cs +++ b/samples/react/MusicStore/Infrastructure/NoCacheAttribute.cs @@ -1,6 +1,6 @@ -using Microsoft.AspNet.Mvc; +using Microsoft.AspNetCore.Mvc; using System; -using Microsoft.AspNet.Mvc.Filters; +using Microsoft.AspNetCore.Mvc.Filters; namespace MusicStore.Infrastructure { diff --git a/samples/react/MusicStore/Infrastructure/PagedList.cs b/samples/react/MusicStore/Infrastructure/PagedList.cs index b5593a6..b2cb2c5 100644 --- a/samples/react/MusicStore/Infrastructure/PagedList.cs +++ b/samples/react/MusicStore/Infrastructure/PagedList.cs @@ -1,4 +1,4 @@ -using Microsoft.Data.Entity; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; diff --git a/samples/react/MusicStore/Infrastructure/SortExpression.cs b/samples/react/MusicStore/Infrastructure/SortExpression.cs index 279efb7..88ba312 100644 --- a/samples/react/MusicStore/Infrastructure/SortExpression.cs +++ b/samples/react/MusicStore/Infrastructure/SortExpression.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; -using Microsoft.AspNet.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc.ViewFeatures.Internal; namespace MusicStore.Infrastructure { diff --git a/samples/react/MusicStore/Startup.cs b/samples/react/MusicStore/Startup.cs index fc94961..e5311f8 100755 --- a/samples/react/MusicStore/Startup.cs +++ b/samples/react/MusicStore/Startup.cs @@ -1,13 +1,18 @@ -using AutoMapper; -using Microsoft.AspNet.Authorization; -using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Hosting; -using Microsoft.AspNet.Identity.EntityFramework; +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.AspNet.SpaServices.Webpack; -using Microsoft.Data.Entity; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.PlatformAbstractions; +using AutoMapper; using MusicStore.Apis; using MusicStore.Models; @@ -15,38 +20,16 @@ namespace MusicStore { 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) { - services.Configure(settings => - { - settings.DefaultAdminUsername = Configuration["DefaultAdminUsername"]; - settings.DefaultAdminPassword = Configuration["DefaultAdminPassword"]; - }); - - // Add MVC services to the services container. services.AddMvc(); - - // Uncomment the following line to add Web API services which makes it easier to port Web API 2 controllers. - // You will also need to add the Microsoft.AspNet.Mvc.WebApiCompatShim package to the 'dependencies' section of project.json. - // services.AddWebApiConventions(); - + // Add EF services to the service container services.AddEntityFramework() - .AddSqlite() + .AddEntityFrameworkSqlite() .AddDbContext(options => { - options.UseSqlite(Configuration["DbConnectionString"]); + options.UseSqlite("Data Source=music-db.sqlite"); }); // Add Identity services to the services container @@ -75,21 +58,13 @@ namespace MusicStore } // 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(LogLevel.Warning); - + app.UseDeveloperExceptionPage(); + // Initialize the sample data SampleData.InitializeMusicStoreDatabaseAsync(app.ApplicationServices).Wait(); - if (env.IsDevelopment()) { - app.UseDeveloperExceptionPage(); - } else { - app.UseExceptionHandler("/Home/Error"); - } - - app.UseIISPlatformHandler(); - // In dev mode, the JS/TS/etc is compiled and served dynamically and supports hot replacement. // In production, we assume you've used webpack to emit the prebuilt content to disk. if (env.IsDevelopment()) { @@ -100,19 +75,38 @@ namespace MusicStore } app.UseStaticFiles(); + loggerFactory.AddConsole(); - app.UseMvc(routes => { + // Add MVC to the request pipeline. + app.UseMvc(routes => + { + // Matches requests that correspond to an existent controller/action pair routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); - routes.MapSpaFallbackRoute( - name: "spa-fallback", - defaults: new { controller = "Home", action = "Index" }); + // Matches any other request that doesn't appear to have a filename extension (defined as 'having a dot in the last URI segment'). + // This means you'll correctly get 404s for /some/dir/non-existent-image.png instead of returning the SPA HTML. + // However, it means requests like /customers/isaac.newton will *not* be mapped into the SPA, so if you need to accept + // URIs like that you'll need to match all URIs, e.g.: + // routes.MapRoute("spa-fallback", "{*anything}", new { controller = "Home", action = "Index" }); + // (which of course will match /customers/isaac.png too, so in that case it would serve the PNG image at that URL if one is on disk, + // or the SPA HTML if not). + routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Home", action = "Index" }); }); } - // 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/react/MusicStore/Views/_ViewImports.cshtml b/samples/react/MusicStore/Views/_ViewImports.cshtml index 3f89d8a..191e162 100755 --- a/samples/react/MusicStore/Views/_ViewImports.cshtml +++ b/samples/react/MusicStore/Views/_ViewImports.cshtml @@ -1,3 +1,3 @@ @using MusicStore -@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" +@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" @addTagHelper "*, Microsoft.AspNet.SpaServices" diff --git a/samples/react/MusicStore/appsettings.json b/samples/react/MusicStore/appsettings.json deleted file mode 100755 index 980ba08..0000000 --- a/samples/react/MusicStore/appsettings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "DbConnectionString": "Data Source=music-db.sqlite", - "Logging": { - "IncludeScopes": false, - "LogLevel": { - "Default": "Warning", - "System": "Information", - "Microsoft": "Information" - } - } -} diff --git a/samples/react/MusicStore/package.json b/samples/react/MusicStore/package.json index 8dd2dca..448f1c9 100644 --- a/samples/react/MusicStore/package.json +++ b/samples/react/MusicStore/package.json @@ -20,6 +20,9 @@ "webpack-hot-middleware": "^2.6.4" }, "dependencies": { + "aspnet-prerendering": "^1.0.0", + "aspnet-webpack": "^1.0.3", + "aspnet-webpack-react": "^1.0.1", "bootstrap": "^3.3.6", "domain-context": "^0.5.1", "domain-task": "^1.0.0", diff --git a/samples/react/MusicStore/project.json b/samples/react/MusicStore/project.json index 2291031..9064551 100755 --- a/samples/react/MusicStore/project.json +++ b/samples/react/MusicStore/project.json @@ -1,28 +1,28 @@ { "version": "1.0.0-*", "compilationOptions": { - "emitEntryPoint": true + "emitEntryPoint": true, + "warningsAsErrors": true, + "preserveCompilationContext": true }, "tooling": { "defaultNamespace": "MusicStore" }, "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.AspNet.Identity.EntityFramework": "3.0.0-rc1-*", + "Microsoft.AspNetCore.Diagnostics": "1.0.0-*", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "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.EntityFrameworkCore.SQLite": "1.0.0-*", "Microsoft.AspNet.ReactServices": "1.0.0-*", - "EntityFramework.SQLite": "7.0.0-rc1-*", "AutoMapper": "4.1.1" }, @@ -31,8 +31,15 @@ }, "frameworks": { - "dnx451": {}, - "dnxcore50": {} + "netstandardapp1.5": { + "imports": [ + "dnxcore50", + "portable-net451+win8" + ], + "dependencies": { + "NETStandard.Library": "1.5.0-*" + } + } }, "exclude": [