├── .gitignore ├── 1. Getting Started └── HelloWorld │ ├── HelloWorld.sln │ └── src │ └── HelloWorld │ ├── HelloWorld.csproj │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ └── web.config ├── 10. MIcroservices and Docker └── Docker │ ├── .dockerignore │ ├── .gitignore │ ├── .vscode │ ├── launch.json │ └── tasks.json │ ├── MonolithToMicroservices.sln │ ├── MonolithToMicroservices │ ├── .dockerignore │ ├── .vscode │ │ ├── launch.json │ │ └── tasks.json │ ├── Controllers │ │ ├── HomeController.cs │ │ └── OrdersController.cs │ ├── Dockerfile │ ├── Infrastructure │ │ ├── HttpClient.cs │ │ └── IHttpClient.cs │ ├── Models │ │ ├── ApiResponse.cs │ │ ├── ApiSettings.cs │ │ ├── Customer.cs │ │ ├── CustomerViewModel.cs │ │ ├── IApiSettings.cs │ │ ├── Order.cs │ │ ├── PagingResult.cs │ │ └── State.cs │ ├── MonolithToMicroservices.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Repository │ │ ├── CustomersRepository.cs │ │ ├── ICustomersRepository.cs │ │ ├── ILookupRepository.cs │ │ └── LookupRepository.cs │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ ├── Create.cshtml │ │ │ ├── Delete.cshtml │ │ │ ├── Details.cshtml │ │ │ ├── Edit.cshtml │ │ │ └── Index.cshtml │ │ ├── Orders │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ └── _Layout.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── app.dev.dockerfile │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── docker-compose.yml │ └── wwwroot │ │ ├── favicon.ico │ │ ├── images │ │ ├── favicon.ico │ │ ├── female.png │ │ ├── male.png │ │ └── people.png │ │ └── styles │ │ └── styles.css │ ├── README.md │ ├── Services │ ├── Customers.API │ │ ├── Controllers │ │ │ ├── CustomerOrdersApiController.cs │ │ │ └── CustomersApiController.cs │ │ ├── Customers.API.csproj │ │ ├── Customers.API.dev.dockerfile │ │ ├── Customers.sqlite │ │ ├── Dockerfile │ │ ├── Models │ │ │ ├── ApiResponse.cs │ │ │ ├── Customer.cs │ │ │ ├── Order.cs │ │ │ ├── PagingResult.cs │ │ │ └── State.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Repository │ │ │ ├── CustomerOrdersRepository.cs │ │ │ ├── CustomersDbContext.cs │ │ │ ├── CustomersDbSeeder.cs │ │ │ ├── CustomersRepository.cs │ │ │ ├── ICustomerOrdersRepository.cs │ │ │ ├── ICustomersRepository.cs │ │ │ ├── IOrdersRepository.cs │ │ │ └── OrdersRepository.cs │ │ ├── Startup.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── Lookup.API │ │ ├── .dockerignore │ │ ├── Controllers │ │ └── LookupApiController.cs │ │ ├── Dockerfile │ │ ├── Lookup.API.csproj │ │ ├── Lookup.API.dev.dockerfile │ │ ├── Lookup.sqlite │ │ ├── Models │ │ ├── ApiResponse.cs │ │ └── State.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Repository │ │ ├── ILookupRepository.cs │ │ ├── LookupDbContext.cs │ │ ├── LookupRepository.cs │ │ └── LookupsDbSeeder.cs │ │ ├── Startup.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ └── docker-compose.yml ├── 2. Configuration └── UsingConfiguration │ ├── UsingConfiguration.sln │ └── UsingConfiguration │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ ├── UsingConfiguration.csproj │ ├── appsettings.json │ ├── appsettings.production.json │ └── appsettings.staging.json ├── 3. Dependency Injection ├── ConfiguringServices │ ├── ConfiguringServices.sln │ └── src │ │ └── ConfiguringServices │ │ ├── ConfiguringServices.csproj │ │ ├── Controllers │ │ └── DataServiceController.cs │ │ ├── Filters │ │ └── CustomErrorFilter.cs │ │ ├── Models │ │ └── Customer.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ └── Startup.cs └── UsingDependencyInjection │ ├── UsingDependencyInjection.sln │ └── src │ ├── BizRules │ ├── BizRules.csproj │ ├── Calculator.cs │ ├── ICalculator.cs │ ├── IScoped.cs │ ├── ITransient.cs │ ├── Scoped.cs │ └── Transient.cs │ └── UsingDependencyInjection │ ├── Controllers │ └── HomeController.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ ├── UsingDependencyInjection.csproj │ ├── ViewModels │ └── DIViewModel.cs │ ├── Views │ └── Home │ │ └── Index.cshtml │ └── web.config ├── 4. Middleware ├── CustomMiddleware │ ├── CustomMiddleware.sln │ └── src │ │ └── CustomMiddleware │ │ ├── Controllers │ │ └── HomeController.cs │ │ ├── CustomMiddleware.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── UserAgentLoggerMiddleware.cs │ │ └── appsettings.json ├── UsingMVCMiddleware │ ├── UsingMVCMiddleware.sln │ └── src │ │ └── UsingMVCMiddleware │ │ ├── Controllers │ │ └── HomeController.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ └── UsingMVCMiddleware.csproj ├── UsingMVCRoutes │ ├── UsingMVCRoutes.sln │ └── src │ │ └── UsingMVCRoutes │ │ ├── Controllers │ │ └── HomeController.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── UsingMVCRoutes.csproj │ │ └── Views │ │ └── Home │ │ └── Index.cshtml └── UsingMapWithMiddleware │ ├── UsingMapWithMiddleware.sln │ └── src │ └── UsingMapWithMiddleware │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ └── UsingMapWithMiddleware.csproj ├── 5. Controllers └── WebApi │ ├── WebApi.sln │ └── src │ └── WebApi │ ├── Controllers │ ├── DataServiceController.cs │ └── HomeController.cs │ ├── Filters │ └── CustomErrorFilter.cs │ ├── Models │ └── Customer.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ ├── Views │ └── Home │ │ └── Index.cshtml │ ├── WebApi.csproj │ └── wwwroot │ └── js │ ├── libs │ └── jquery.js │ └── main.js ├── 6. Views └── TagHelpersAndViewComponents │ ├── TagHelpersAndViewComponents.sln │ └── src │ └── TagHelpersAndViewComponents │ ├── Controllers │ └── HomeController.cs │ ├── Models │ └── Person.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ ├── TagHelpers │ ├── CustomerCardTagHelper.cs │ └── MapTagHelper.cs │ ├── TagHelpersAndViewComponents.csproj │ ├── ViewComponents │ └── CustomersViewComponent.cs │ ├── Views │ ├── Home │ │ ├── About.cshtml │ │ ├── Components │ │ │ └── Customers │ │ │ │ └── Default.cshtml │ │ ├── Contact.cshtml │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ └── _Layout.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml │ ├── appsettings.json │ └── wwwroot │ ├── _references.js │ ├── css │ ├── site.css │ └── site.min.css │ ├── favicon.ico │ ├── images │ ├── banner1.svg │ ├── banner2.svg │ ├── banner3.svg │ └── banner4.svg │ ├── js │ ├── site.js │ └── site.min.js │ └── lib │ ├── bootstrap │ ├── .bower.json │ ├── LICENSE │ └── dist │ │ ├── css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap-theme.css.map │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap-theme.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ └── npm.js │ ├── jquery-validation-unobtrusive │ ├── .bower.json │ ├── jquery.validate.unobtrusive.js │ └── jquery.validate.unobtrusive.min.js │ ├── jquery-validation │ ├── .bower.json │ ├── LICENSE.md │ └── dist │ │ ├── additional-methods.js │ │ ├── additional-methods.min.js │ │ ├── jquery.validate.js │ │ └── jquery.validate.min.js │ └── jquery │ ├── .bower.json │ ├── LICENSE.txt │ └── dist │ ├── jquery.js │ ├── jquery.min.js │ └── jquery.min.map ├── 8. Security ├── CookieAuthentication │ ├── CookieAuthentication.sln │ └── CookieAuthentication │ │ ├── Controllers │ │ ├── AccountController.cs │ │ └── HomeController.cs │ │ ├── CookieAuthentication.csproj │ │ ├── CookieValidator.cs │ │ ├── Models │ │ └── ErrorViewModel.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── Views │ │ ├── Account │ │ │ └── Forbidden.cshtml │ │ ├── Home │ │ │ ├── Index.cshtml │ │ │ └── Privacy.cshtml │ │ └── _ViewImports.cshtml │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── readme.md │ │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ └── banner3.svg │ │ ├── js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── OAuth │ ├── .vscode │ │ ├── launch.json │ │ └── tasks.json │ ├── Authentication │ │ └── OAuthConfiguration.cs │ ├── Controllers │ │ ├── AuthenticationController.cs │ │ ├── CustomersController.cs │ │ └── HomeController.cs │ ├── Models │ │ ├── Customer.cs │ │ ├── ErrorViewModel.cs │ │ └── OAuthUser.cs │ ├── OAuth.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ ├── About.cshtml │ │ │ ├── Contact.cshtml │ │ │ ├── Index.cshtml │ │ │ └── Privacy.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _CookieConsentPartial.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── readme.md │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ └── banner3.svg │ │ ├── js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map └── UsingIdentity │ ├── UsingIdentity.sln │ └── UsingIdentity │ ├── Areas │ └── Identity │ │ ├── IdentityHostingStartup.cs │ │ └── Pages │ │ ├── Account │ │ ├── Register.cshtml │ │ ├── Register.cshtml.cs │ │ └── _ViewImports.cshtml │ │ ├── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── Controllers │ └── HomeController.cs │ ├── Data │ ├── ApplicationDbContext.cs │ └── RolesData.cs │ ├── Migrations │ ├── 20180803171536_initialize.Designer.cs │ ├── 20180803171536_initialize.cs │ └── ApplicationDbContextModelSnapshot.cs │ ├── Models │ ├── ApplicationUser.cs │ └── ErrorViewModel.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── ScaffoldingReadme.txt │ ├── Security │ └── ApplicationClaimsPrincipalFactory.cs │ ├── Startup.cs │ ├── UsingIdentity.csproj │ ├── Views │ ├── Home │ │ ├── Index.cshtml │ │ └── Privacy.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ ├── _CookieConsentPartial.cshtml │ │ ├── _Layout.cshtml │ │ ├── _LoginPartial.cshtml │ │ └── _ValidationScriptsPartial.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── readme.md │ ├── solvedIssues.md │ └── wwwroot │ ├── css │ ├── site.css │ └── site.min.css │ ├── favicon.ico │ ├── images │ ├── banner1.svg │ ├── banner2.svg │ └── banner3.svg │ ├── js │ ├── site.js │ └── site.min.js │ └── lib │ ├── bootstrap │ ├── .bower.json │ ├── LICENSE │ └── dist │ │ ├── css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap-theme.css.map │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap-theme.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ └── npm.js │ ├── jquery-validation-unobtrusive │ ├── .bower.json │ ├── LICENSE.txt │ ├── jquery.validate.unobtrusive.js │ └── jquery.validate.unobtrusive.min.js │ ├── jquery-validation │ ├── .bower.json │ ├── LICENSE.md │ └── dist │ │ ├── additional-methods.js │ │ ├── additional-methods.min.js │ │ ├── jquery.validate.js │ │ └── jquery.validate.min.js │ └── jquery │ ├── .bower.json │ ├── LICENSE.txt │ └── dist │ ├── jquery.js │ ├── jquery.min.js │ └── jquery.min.map ├── 9. EntityFramework ├── EFCRUD │ ├── EFCRUD.sln │ └── EFCRUD │ │ ├── Controllers │ │ └── MoviesController.cs │ │ ├── EFCRUD.csproj │ │ ├── Models │ │ ├── ErrorViewModel.cs │ │ └── Movie.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Repository │ │ ├── IMoviesRepository.cs │ │ ├── MoviesDbContext.cs │ │ ├── MoviesDbSeeder.cs │ │ └── MoviesRepository.cs │ │ ├── Startup.cs │ │ ├── Views │ │ ├── Movies │ │ │ ├── Create.cshtml │ │ │ ├── Delete.cshtml │ │ │ ├── Details.cshtml │ │ │ ├── Edit.cshtml │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _CookieConsentPartial.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── readme.md │ │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ └── banner3.svg │ │ ├── js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map └── EFCore │ ├── EFCore.sln │ └── src │ └── EFCore │ ├── Controllers │ ├── DistributorsController.cs │ └── HomeController.cs │ ├── EFCore.csproj │ ├── Models │ ├── Distributor.cs │ └── Movie.cs │ ├── Movies.sqlite │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Repository │ ├── IMoviesRepository.cs │ ├── MoviesDbContext.cs │ ├── MoviesRepository.cs │ └── Seeder.cs │ ├── Startup.cs │ ├── Views │ ├── Distributors │ │ └── Index.cshtml │ ├── Home │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ ├── _Layout.cshtml │ │ └── _ValidationScriptsPartial.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml │ ├── appsettings.json │ └── wwwroot │ ├── _references.js │ ├── css │ ├── site.css │ └── site.min.css │ ├── favicon.ico │ ├── images │ ├── banner1.svg │ ├── banner2.svg │ ├── banner3.svg │ └── banner4.svg │ ├── js │ ├── site.js │ └── site.min.js │ └── lib │ ├── bootstrap │ ├── .bower.json │ ├── LICENSE │ └── dist │ │ ├── css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap-theme.css.map │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap-theme.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ └── npm.js │ ├── jquery-validation-unobtrusive │ ├── .bower.json │ ├── jquery.validate.unobtrusive.js │ └── jquery.validate.unobtrusive.min.js │ ├── jquery-validation │ ├── .bower.json │ ├── LICENSE.md │ └── dist │ │ ├── additional-methods.js │ │ ├── additional-methods.min.js │ │ ├── jquery.validate.js │ │ └── jquery.validate.min.js │ └── jquery │ ├── .bower.json │ ├── LICENSE.txt │ └── dist │ ├── jquery.js │ ├── jquery.min.js │ └── jquery.min.map ├── Labs ├── Creating And Using Custom Middleware │ └── End │ │ ├── CreatingAndUsingCustomMiddleware.sln │ │ └── CreatingAndUsingCustomMiddleware │ │ ├── Controllers │ │ └── HomeController.cs │ │ ├── CreatingAndUsingCustomMiddleware.csproj │ │ ├── Middleware │ │ └── CustomMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── Views │ │ ├── Home │ │ │ ├── About.cshtml │ │ │ ├── Contact.cshtml │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ │ ├── appsettings.json │ │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ ├── banner3.svg │ │ └── banner4.svg │ │ ├── js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── Monolith to Microservices │ ├── Begin │ │ ├── Microservices │ │ │ ├── .dockerignore │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ │ ├── MonolithToMicroservices.sln │ │ │ ├── MonolithToMicroservices │ │ │ │ ├── .dockerignore │ │ │ │ ├── .vscode │ │ │ │ │ ├── launch.json │ │ │ │ │ └── tasks.json │ │ │ │ ├── Controllers │ │ │ │ │ ├── HomeController.cs │ │ │ │ │ └── OrdersController.cs │ │ │ │ ├── Dockerfile │ │ │ │ ├── Infrastructure │ │ │ │ │ ├── HttpClient.cs │ │ │ │ │ └── IHttpClient.cs │ │ │ │ ├── Models │ │ │ │ │ ├── ApiResponse.cs │ │ │ │ │ ├── ApiSettings.cs │ │ │ │ │ ├── Customer.cs │ │ │ │ │ ├── CustomerViewModel.cs │ │ │ │ │ ├── IApiSettings.cs │ │ │ │ │ ├── Order.cs │ │ │ │ │ ├── PagingResult.cs │ │ │ │ │ └── State.cs │ │ │ │ ├── MonolithToMicroservices.csproj │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties │ │ │ │ │ └── launchSettings.json │ │ │ │ ├── Repository │ │ │ │ │ ├── CustomersRepository.cs │ │ │ │ │ ├── ICustomersRepository.cs │ │ │ │ │ ├── ILookupRepository.cs │ │ │ │ │ └── LookupRepository.cs │ │ │ │ ├── Startup.cs │ │ │ │ ├── Views │ │ │ │ │ ├── Home │ │ │ │ │ │ ├── Create.cshtml │ │ │ │ │ │ ├── Delete.cshtml │ │ │ │ │ │ ├── Details.cshtml │ │ │ │ │ │ ├── Edit.cshtml │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Orders │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Shared │ │ │ │ │ │ ├── Error.cshtml │ │ │ │ │ │ └── _Layout.cshtml │ │ │ │ │ ├── _ViewImports.cshtml │ │ │ │ │ └── _ViewStart.cshtml │ │ │ │ ├── app.dev.dockerfile │ │ │ │ ├── appsettings.Development.json │ │ │ │ ├── appsettings.json │ │ │ │ ├── docker-compose.yml │ │ │ │ └── wwwroot │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── images │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── female.png │ │ │ │ │ ├── male.png │ │ │ │ │ └── people.png │ │ │ │ │ └── styles │ │ │ │ │ └── styles.css │ │ │ ├── README.md │ │ │ ├── Services │ │ │ │ ├── Customers.API │ │ │ │ │ ├── Controllers │ │ │ │ │ │ ├── CustomerOrdersApiController.cs │ │ │ │ │ │ └── CustomersApiController.cs │ │ │ │ │ ├── Customers.API.csproj │ │ │ │ │ ├── Customers.API.dev.dockerfile │ │ │ │ │ ├── Customers.sqlite │ │ │ │ │ ├── Dockerfile │ │ │ │ │ ├── Models │ │ │ │ │ │ ├── ApiResponse.cs │ │ │ │ │ │ ├── Customer.cs │ │ │ │ │ │ ├── Order.cs │ │ │ │ │ │ ├── PagingResult.cs │ │ │ │ │ │ └── State.cs │ │ │ │ │ ├── Program.cs │ │ │ │ │ ├── Properties │ │ │ │ │ │ └── launchSettings.json │ │ │ │ │ ├── Repository │ │ │ │ │ │ ├── CustomerOrdersRepository.cs │ │ │ │ │ │ ├── CustomersDbContext.cs │ │ │ │ │ │ ├── CustomersDbSeeder.cs │ │ │ │ │ │ ├── CustomersRepository.cs │ │ │ │ │ │ ├── ICustomerOrdersRepository.cs │ │ │ │ │ │ ├── ICustomersRepository.cs │ │ │ │ │ │ ├── IOrdersRepository.cs │ │ │ │ │ │ └── OrdersRepository.cs │ │ │ │ │ ├── Startup.cs │ │ │ │ │ ├── appsettings.Development.json │ │ │ │ │ └── appsettings.json │ │ │ │ └── Lookup.API │ │ │ │ │ ├── .dockerignore │ │ │ │ │ ├── Controllers │ │ │ │ │ └── LookupApiController.cs │ │ │ │ │ ├── Dockerfile │ │ │ │ │ ├── Lookup.API.csproj │ │ │ │ │ ├── Lookup.API.dev.dockerfile │ │ │ │ │ ├── Lookup.sqlite │ │ │ │ │ ├── Models │ │ │ │ │ ├── ApiResponse.cs │ │ │ │ │ └── State.cs │ │ │ │ │ ├── Program.cs │ │ │ │ │ ├── Properties │ │ │ │ │ └── launchSettings.json │ │ │ │ │ ├── Repository │ │ │ │ │ ├── ILookupRepository.cs │ │ │ │ │ ├── LookupDbContext.cs │ │ │ │ │ ├── LookupRepository.cs │ │ │ │ │ └── LookupsDbSeeder.cs │ │ │ │ │ ├── Startup.cs │ │ │ │ │ ├── appsettings.Development.json │ │ │ │ │ └── appsettings.json │ │ │ ├── docker-compose.dcproj │ │ │ ├── docker-compose.override.yml │ │ │ └── docker-compose.yml │ │ └── Monolithic │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── MonolithToMicroservices.sln │ │ │ ├── MonolithToMicroservices │ │ │ ├── .vscode │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ │ ├── Controllers │ │ │ │ ├── HomeController.cs │ │ │ │ └── OrdersController.cs │ │ │ ├── Customers.sqlite │ │ │ ├── Models │ │ │ │ ├── Customer.cs │ │ │ │ ├── CustomerViewModel.cs │ │ │ │ ├── Order.cs │ │ │ │ ├── PagingResult.cs │ │ │ │ └── State.cs │ │ │ ├── MonolithToMicroservices.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── Repository │ │ │ │ ├── CustomersDbContext.cs │ │ │ │ ├── CustomersDbSeeder.cs │ │ │ │ ├── CustomersRepository.cs │ │ │ │ ├── ICustomersRepository.cs │ │ │ │ ├── ILookupRepository.cs │ │ │ │ ├── IOrdersRepository.cs │ │ │ │ ├── LookupRepository.cs │ │ │ │ └── OrdersRepository.cs │ │ │ ├── Startup.cs │ │ │ ├── Views │ │ │ │ ├── Home │ │ │ │ │ ├── Create.cshtml │ │ │ │ │ ├── Delete.cshtml │ │ │ │ │ ├── Details.cshtml │ │ │ │ │ ├── Edit.cshtml │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── Orders │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── Shared │ │ │ │ │ ├── Error.cshtml │ │ │ │ │ └── _Layout.cshtml │ │ │ │ ├── _ViewImports.cshtml │ │ │ │ └── _ViewStart.cshtml │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ ├── aspnetcore.development.dockerfile │ │ │ ├── docker-compose.yml │ │ │ └── wwwroot │ │ │ │ ├── favicon.ico │ │ │ │ ├── images │ │ │ │ ├── favicon.ico │ │ │ │ ├── female.png │ │ │ │ ├── male.png │ │ │ │ └── people.png │ │ │ │ └── styles │ │ │ │ └── styles.css │ │ │ └── README.md │ └── End │ │ └── Microservices │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── .vscode │ │ ├── launch.json │ │ └── tasks.json │ │ ├── MonolithToMicroservices.sln │ │ ├── MonolithToMicroservices │ │ ├── .dockerignore │ │ ├── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── Controllers │ │ │ ├── HomeController.cs │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Infrastructure │ │ │ ├── HttpClient.cs │ │ │ └── IHttpClient.cs │ │ ├── Models │ │ │ ├── ApiResponse.cs │ │ │ ├── ApiSettings.cs │ │ │ ├── Customer.cs │ │ │ ├── CustomerViewModel.cs │ │ │ ├── IApiSettings.cs │ │ │ ├── Order.cs │ │ │ ├── PagingResult.cs │ │ │ └── State.cs │ │ ├── MonolithToMicroservices.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Repository │ │ │ ├── CustomersRepository.cs │ │ │ ├── ICustomersRepository.cs │ │ │ ├── ILookupRepository.cs │ │ │ └── LookupRepository.cs │ │ ├── Startup.cs │ │ ├── Views │ │ │ ├── Home │ │ │ │ ├── Create.cshtml │ │ │ │ ├── Delete.cshtml │ │ │ │ ├── Details.cshtml │ │ │ │ ├── Edit.cshtml │ │ │ │ └── Index.cshtml │ │ │ ├── Orders │ │ │ │ └── Index.cshtml │ │ │ ├── Shared │ │ │ │ ├── Error.cshtml │ │ │ │ └── _Layout.cshtml │ │ │ ├── _ViewImports.cshtml │ │ │ └── _ViewStart.cshtml │ │ ├── app.dev.dockerfile │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── docker-compose.yml │ │ └── wwwroot │ │ │ ├── favicon.ico │ │ │ ├── images │ │ │ ├── favicon.ico │ │ │ ├── female.png │ │ │ ├── male.png │ │ │ └── people.png │ │ │ └── styles │ │ │ └── styles.css │ │ ├── README.md │ │ ├── Services │ │ ├── Customers.API │ │ │ ├── Controllers │ │ │ │ ├── CustomerOrdersApiController.cs │ │ │ │ └── CustomersApiController.cs │ │ │ ├── Customers.API.csproj │ │ │ ├── Customers.API.dev.dockerfile │ │ │ ├── Customers.sqlite │ │ │ ├── Dockerfile │ │ │ ├── Models │ │ │ │ ├── ApiResponse.cs │ │ │ │ ├── Customer.cs │ │ │ │ ├── Order.cs │ │ │ │ ├── PagingResult.cs │ │ │ │ └── State.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── Repository │ │ │ │ ├── CustomerOrdersRepository.cs │ │ │ │ ├── CustomersDbContext.cs │ │ │ │ ├── CustomersDbSeeder.cs │ │ │ │ ├── CustomersRepository.cs │ │ │ │ ├── ICustomerOrdersRepository.cs │ │ │ │ ├── ICustomersRepository.cs │ │ │ │ ├── IOrdersRepository.cs │ │ │ │ └── OrdersRepository.cs │ │ │ ├── Startup.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ └── Lookup.API │ │ │ ├── .dockerignore │ │ │ ├── Controllers │ │ │ └── LookupApiController.cs │ │ │ ├── Dockerfile │ │ │ ├── Lookup.API.csproj │ │ │ ├── Lookup.API.dev.dockerfile │ │ │ ├── Lookup.sqlite │ │ │ ├── Models │ │ │ ├── ApiResponse.cs │ │ │ └── State.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── launchSettings.json │ │ │ ├── Repository │ │ │ ├── ILookupRepository.cs │ │ │ ├── LookupDbContext.cs │ │ │ ├── LookupRepository.cs │ │ │ └── LookupsDbSeeder.cs │ │ │ ├── Startup.cs │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ └── docker-compose.yml ├── Orchestrating Containers with Docker Compose │ ├── Begin │ │ ├── .gitignore │ │ ├── AspNetCorePostgreSQLDockerApp.sln │ │ ├── AspNetCorePostgreSQLDockerApp │ │ │ ├── .docker │ │ │ │ └── wait-for-postgres.sh │ │ │ ├── APIs │ │ │ │ └── CustomersServiceController.cs │ │ │ ├── AspNetCorePostgreSQLDockerApp.csproj │ │ │ ├── Controllers │ │ │ │ ├── CustomersController.cs │ │ │ │ └── HomeController.cs │ │ │ ├── Models │ │ │ │ ├── Customer.cs │ │ │ │ ├── DockerCommand.cs │ │ │ │ ├── DockerCommandExample.cs │ │ │ │ ├── Order.cs │ │ │ │ └── State.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── Repository │ │ │ │ ├── CustomersDbContext.cs │ │ │ │ ├── CustomersDbSeeder.cs │ │ │ │ ├── CustomersRepository.cs │ │ │ │ ├── DockerCommandsDbContext.cs │ │ │ │ ├── DockerCommandsDbSeeder.cs │ │ │ │ ├── DockerCommandsRepository.cs │ │ │ │ ├── ICustomersRepository.cs │ │ │ │ └── IDockerCommandsRepository.cs │ │ │ ├── Startup.cs │ │ │ ├── Views │ │ │ │ ├── Customers │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── Home │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── Shared │ │ │ │ │ ├── Error.cshtml │ │ │ │ │ ├── _Layout.cshtml │ │ │ │ │ └── _ValidationScriptsPartial.cshtml │ │ │ │ ├── _ViewImports.cshtml │ │ │ │ └── _ViewStart.cshtml │ │ │ ├── appsettings.json │ │ │ ├── aspnetcore.dockerfile │ │ │ ├── bundleconfig.json │ │ │ ├── docker-compose.yml │ │ │ ├── gulpfile.js │ │ │ ├── package.json │ │ │ ├── tsconfig.json │ │ │ ├── web.config │ │ │ └── wwwroot │ │ │ │ ├── _references.js │ │ │ │ ├── app │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── app.routing.ts │ │ │ │ ├── customers │ │ │ │ │ ├── customers.component.html │ │ │ │ │ └── customers.component.ts │ │ │ │ ├── main.ts │ │ │ │ └── shared │ │ │ │ │ ├── interfaces.ts │ │ │ │ │ └── services │ │ │ │ │ └── data.service.ts │ │ │ │ ├── css │ │ │ │ ├── site.css │ │ │ │ └── site.min.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── images │ │ │ │ ├── ASP-NET-Banners-01.png │ │ │ │ ├── ASP-NET-Banners-02.png │ │ │ │ ├── Banner-01-Azure.png │ │ │ │ ├── Banner-02-VS.png │ │ │ │ ├── banner1.svg │ │ │ │ ├── banner2.svg │ │ │ │ ├── banner3.svg │ │ │ │ └── banner4.svg │ │ │ │ ├── index2.html │ │ │ │ ├── js │ │ │ │ ├── site.js │ │ │ │ ├── site.min.js │ │ │ │ └── site.min.js.map │ │ │ │ ├── systemjs.config.js │ │ │ │ └── web.config │ │ └── README.md │ └── End │ │ ├── .gitignore │ │ ├── AspNetCorePostgreSQLDockerApp.sln │ │ ├── AspNetCorePostgreSQLDockerApp │ │ ├── .docker │ │ │ └── wait-for-postgres.sh │ │ ├── APIs │ │ │ └── CustomersServiceController.cs │ │ ├── AspNetCorePostgreSQLDockerApp.csproj │ │ ├── Controllers │ │ │ ├── CustomersController.cs │ │ │ └── HomeController.cs │ │ ├── Models │ │ │ ├── Customer.cs │ │ │ ├── DockerCommand.cs │ │ │ ├── DockerCommandExample.cs │ │ │ ├── Order.cs │ │ │ └── State.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Repository │ │ │ ├── CustomersDbContext.cs │ │ │ ├── CustomersDbSeeder.cs │ │ │ ├── CustomersRepository.cs │ │ │ ├── DockerCommandsDbContext.cs │ │ │ ├── DockerCommandsDbSeeder.cs │ │ │ ├── DockerCommandsRepository.cs │ │ │ ├── ICustomersRepository.cs │ │ │ └── IDockerCommandsRepository.cs │ │ ├── Startup.cs │ │ ├── Views │ │ │ ├── Customers │ │ │ │ └── Index.cshtml │ │ │ ├── Home │ │ │ │ └── Index.cshtml │ │ │ ├── Shared │ │ │ │ ├── Error.cshtml │ │ │ │ ├── _Layout.cshtml │ │ │ │ └── _ValidationScriptsPartial.cshtml │ │ │ ├── _ViewImports.cshtml │ │ │ └── _ViewStart.cshtml │ │ ├── appsettings.json │ │ ├── aspnetcore.dockerfile │ │ ├── bundleconfig.json │ │ ├── docker-compose.yml │ │ ├── gulpfile.js │ │ ├── package.json │ │ ├── tsconfig.json │ │ ├── web.config │ │ └── wwwroot │ │ │ ├── _references.js │ │ │ ├── app │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── app.routing.ts │ │ │ ├── customers │ │ │ │ ├── customers.component.html │ │ │ │ └── customers.component.ts │ │ │ ├── main.ts │ │ │ └── shared │ │ │ │ ├── interfaces.ts │ │ │ │ └── services │ │ │ │ └── data.service.ts │ │ │ ├── css │ │ │ ├── site.css │ │ │ └── site.min.css │ │ │ ├── favicon.ico │ │ │ ├── images │ │ │ ├── ASP-NET-Banners-01.png │ │ │ ├── ASP-NET-Banners-02.png │ │ │ ├── Banner-01-Azure.png │ │ │ ├── Banner-02-VS.png │ │ │ ├── banner1.svg │ │ │ ├── banner2.svg │ │ │ ├── banner3.svg │ │ │ └── banner4.svg │ │ │ ├── index2.html │ │ │ ├── js │ │ │ ├── site.js │ │ │ ├── site.min.js │ │ │ └── site.min.js.map │ │ │ ├── systemjs.config.js │ │ │ └── web.config │ │ └── README.md ├── Using Entity Framework Core │ └── End │ │ ├── UsingEntityFrameworkCore.sln │ │ └── UsingEntityFrameworkCore │ │ ├── Controllers │ │ └── HomeController.cs │ │ ├── Models │ │ └── Customer.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Repository │ │ ├── CustomersDbContext.cs │ │ ├── CustomersRepository.cs │ │ └── ICustomersRepository.cs │ │ ├── Startup.cs │ │ ├── UsingEntityFrameworkCore.csproj │ │ ├── Views │ │ ├── Home │ │ │ ├── About.cshtml │ │ │ ├── Contact.cshtml │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ │ ├── appsettings.json │ │ ├── customers.sqlite │ │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ ├── banner3.svg │ │ └── banner4.svg │ │ ├── js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── Using Web API │ └── End │ │ ├── UsingWebAPI.sln │ │ └── UsingWebAPI │ │ ├── Controllers │ │ └── ValuesController.cs │ │ ├── Models │ │ └── Customer.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── UsingWebAPI.csproj │ │ └── appsettings.json └── Working with ASP.NET Core Images and Containers │ └── End │ ├── .vscode │ ├── launch.json │ └── tasks.json │ ├── ASPNET-Core-And-Docker.csproj │ ├── ASPNET-Core-And-Docker.sln │ ├── Controllers │ └── HomeController.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ ├── Views │ ├── Home │ │ ├── About.cshtml │ │ ├── Contact.cshtml │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ └── _Layout.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── dist │ ├── ASPNET-Core-And-Docker.Views.dll │ ├── ASPNET-Core-And-Docker.deps.json │ ├── ASPNET-Core-And-Docker.dll │ ├── ASPNET-Core-And-Docker.runtimeconfig.json │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── web.config │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ ├── banner3.svg │ │ └── banner4.svg │ │ ├── js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map │ ├── docker-compose.prod.yml │ ├── docker-compose.yml │ ├── linus.prod.dockerfile │ ├── linux.dev.dockerfile │ ├── windows.dev.dockerfile │ ├── windows.prod.dockerfile │ └── wwwroot │ ├── css │ ├── site.css │ └── site.min.css │ ├── favicon.ico │ ├── images │ ├── banner1.svg │ ├── banner2.svg │ ├── banner3.svg │ └── banner4.svg │ ├── js │ ├── site.js │ └── site.min.js │ └── lib │ ├── bootstrap │ ├── .bower.json │ ├── LICENSE │ └── dist │ │ ├── css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap-theme.css.map │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap-theme.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ └── npm.js │ ├── jquery-validation-unobtrusive │ ├── .bower.json │ ├── jquery.validate.unobtrusive.js │ └── jquery.validate.unobtrusive.min.js │ ├── jquery-validation │ ├── .bower.json │ ├── LICENSE.md │ └── dist │ │ ├── additional-methods.js │ │ ├── additional-methods.min.js │ │ ├── jquery.validate.js │ │ └── jquery.validate.min.js │ └── jquery │ ├── .bower.json │ ├── LICENSE.txt │ └── dist │ ├── jquery.js │ ├── jquery.min.js │ └── jquery.min.map └── README.md /1. Getting Started/HelloWorld/src/HelloWorld/HelloWorld.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /1. Getting Started/HelloWorld/src/HelloWorld/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace HelloWorld 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /1. Getting Started/HelloWorld/src/HelloWorld/web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | .env 3 | .git 4 | .gitignore 5 | .vs 6 | .vscode 7 | docker-compose.yml 8 | docker-compose.*.yml 9 | */bin 10 | */obj -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular-ASPNET-Core-CustomersService/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !obj/Docker/publish/* 3 | !obj/Docker/empty/ 4 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.ModelBinding; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace MonolithToMicroservices.Models 8 | { 9 | public class ApiResponse 10 | { 11 | public bool Status { get; set; } 12 | public Customer Customer { get; set; } 13 | public ModelStateDictionary ModelState { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Models/ApiSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public class ApiSettings : IApiSettings 9 | { 10 | public string CustomersUri { get; set; } 11 | public string LookupUri { get; set; } 12 | public string CustomerOrdersUri { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Models/CustomerViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public class CustomerViewModel 9 | { 10 | public Customer Customer { get; set; } 11 | public List States { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Models/IApiSettings.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public interface IApiSettings 4 | { 5 | string CustomersUri { get; set; } 6 | string LookupUri { get; set; } 7 | string CustomerOrdersUri { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public class Order 4 | { 5 | public int Id { get; set; } 6 | public string Product { get; set; } 7 | public int Quantity { get; set; } 8 | public decimal Price { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Models/PagingResult.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public struct PagingResult 9 | { 10 | public IEnumerable Records { get; set; } 11 | public int TotalRecords { get; set; } 12 | 13 | public PagingResult(IEnumerable items, int totalRecords) 14 | { 15 | TotalRecords = totalRecords; 16 | Records = items; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Repository/ILookupRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using MonolithToMicroservices.Models; 4 | 5 | namespace MonolithToMicroservices.Repository 6 | { 7 | public interface ILookupRepository 8 | { 9 | Task> GetStatesAsync(); 10 | } 11 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using MonolithToMicroservices 2 | @using MonolithToMicroservices.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/app.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | CMD ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ApiSettings": { 9 | "LookupUri": "http://lookup.api/api/v1/lookup", 10 | "CustomersUri": "http://customers.api/api/v1/customers", 11 | "CustomerOrdersUri": "http://customers.api/api/v1/orders" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/favicon.ico -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/favicon.ico -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/female.png -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/male.png -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/people.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/10. MIcroservices and Docker/Docker/MonolithToMicroservices/wwwroot/images/people.png -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/README.md: -------------------------------------------------------------------------------- 1 | # Angular, ASP.NET Core Customers Service Application 2 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Customers.API.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | ..\..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Customers.API.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | CMD ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Customers.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/10. MIcroservices and Docker/Docker/Services/Customers.API/Customers.sqlite -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.ModelBinding; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Customers.API.Models 8 | { 9 | public class ApiResponse 10 | { 11 | public bool Status { get; set; } 12 | public Customer Customer { get; set; } 13 | public ModelStateDictionary ModelState { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace Customers.API.Models { 2 | public class Order { 3 | public int Id { get; set; } 4 | public string Product { get; set; } 5 | public int Quantity { get; set; } 6 | public decimal Price { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Models/PagingResult.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Customers.API.Models 7 | { 8 | public struct PagingResult 9 | { 10 | public IEnumerable Records { get; set; } 11 | public int TotalRecords { get; set; } 12 | 13 | public PagingResult(IEnumerable items, int totalRecords) 14 | { 15 | TotalRecords = totalRecords; 16 | Records = items; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace Customers.API.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Repository/CustomersDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using Customers.API.Models; 3 | 4 | namespace Customers.API.Repository 5 | { 6 | public class CustomersDbContext : DbContext 7 | { 8 | public DbSet Customers { get; set; } 9 | public DbSet Orders { get; set; } 10 | 11 | public CustomersDbContext (DbContextOptions options) : base(options) { } 12 | } 13 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Repository/ICustomerOrdersRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Customers.API.Models; 4 | 5 | namespace Customers.API.Repository 6 | { 7 | public interface ICustomerOrdersRepository 8 | { 9 | Task GetCustomerOrdersAsync(int id); 10 | } 11 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/Repository/IOrdersRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Customers.API.Models; 4 | 5 | namespace Customers.API.Repository 6 | { 7 | public interface IOrdersRepository 8 | { 9 | Task GetCustomerOrdersAsync(int id); 10 | } 11 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Customers.API/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ConnectionStrings": { 9 | "CustomersSqliteConnectionString": "Data Source=Customers.sqlite" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !obj/Docker/publish/* 3 | !obj/Docker/empty/ 4 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/Lookup.API.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | ..\..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/Lookup.API.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | CMD ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/Lookup.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/10. MIcroservices and Docker/Docker/Services/Lookup.API/Lookup.sqlite -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Lookup.API.Models 7 | { 8 | public class ApiResponse 9 | { 10 | public bool Status { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace Lookup.API.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/Repository/ILookupRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Lookup.API.Models; 4 | 5 | namespace Lookup.API.Repository 6 | { 7 | public interface ILookupRepository 8 | { 9 | Task> GetStatesAsync(); 10 | } 11 | } -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/Repository/LookupDbContext.cs: -------------------------------------------------------------------------------- 1 | using Lookup.API.Models; 2 | using Microsoft.EntityFrameworkCore; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lookup.API.Repository 9 | { 10 | public class LookupDbContext : DbContext 11 | { 12 | public DbSet States { get; set; } 13 | 14 | public LookupDbContext(DbContextOptions options) : base(options) { } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/Services/Lookup.API/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ConnectionStrings": { 9 | "LookupSqliteConnectionString": "Data Source=Lookup.sqlite" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/docker-compose.override.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | customers.api: 5 | environment: 6 | - ASPNETCORE_ENVIRONMENT=Development 7 | ports: 8 | - "80" 9 | 10 | lookup.api: 11 | environment: 12 | - ASPNETCORE_ENVIRONMENT=Development 13 | ports: 14 | - "80" 15 | 16 | monolithtomicroservices: 17 | environment: 18 | - ASPNETCORE_ENVIRONMENT=Development 19 | ports: 20 | - "80" 21 | -------------------------------------------------------------------------------- /10. MIcroservices and Docker/Docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | customers.api: 5 | image: customers.api 6 | build: 7 | context: ./Services/Customers.API 8 | dockerfile: Dockerfile 9 | 10 | lookup.api: 11 | image: lookup.api 12 | build: 13 | context: ./Services/Lookup.API 14 | dockerfile: Dockerfile 15 | 16 | monolithtomicroservices: 17 | image: monolithtomicroservices 18 | build: 19 | context: ./MonolithToMicroservices 20 | dockerfile: Dockerfile 21 | -------------------------------------------------------------------------------- /2. Configuration/UsingConfiguration/UsingConfiguration/UsingConfiguration.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /2. Configuration/UsingConfiguration/UsingConfiguration/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=development;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | } 5 | } -------------------------------------------------------------------------------- /2. Configuration/UsingConfiguration/UsingConfiguration/appsettings.production.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=production;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | } 5 | } -------------------------------------------------------------------------------- /2. Configuration/UsingConfiguration/UsingConfiguration/appsettings.staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=staging;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | } 5 | } -------------------------------------------------------------------------------- /3. Dependency Injection/ConfiguringServices/src/ConfiguringServices/ConfiguringServices.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /3. Dependency Injection/ConfiguringServices/src/ConfiguringServices/Models/Customer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace ConfiguringServices.Models 7 | { 8 | public class Customer 9 | { 10 | public int Id { get; set; } 11 | public string FirstName { get; set; } 12 | public string LastName { get; set; } 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /3. Dependency Injection/ConfiguringServices/src/ConfiguringServices/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace ConfiguringServices 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/BizRules/BizRules.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | BizRules 6 | BizRules 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/BizRules/Calculator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace BizRules 7 | { 8 | public class Calculator : ICalculator 9 | { 10 | public int Add(int x, int y) 11 | { 12 | return x + y; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/BizRules/ICalculator.cs: -------------------------------------------------------------------------------- 1 | namespace BizRules 2 | { 3 | public interface ICalculator 4 | { 5 | int Add(int x, int y); 6 | } 7 | } -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/BizRules/IScoped.cs: -------------------------------------------------------------------------------- 1 | namespace BizRules 2 | { 3 | public interface IScoped 4 | { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/BizRules/ITransient.cs: -------------------------------------------------------------------------------- 1 | namespace BizRules 2 | { 3 | public interface ITransient 4 | { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/BizRules/Scoped.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace BizRules 7 | { 8 | public class Scoped : IScoped 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/BizRules/Transient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace BizRules 7 | { 8 | public class Transient : ITransient 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/UsingDependencyInjection/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace UsingDependencyInjection 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/UsingDependencyInjection/UsingDependencyInjection.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/UsingDependencyInjection/ViewModels/DIViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace UsingDependencyInjection.ViewModels 7 | { 8 | public class DIViewModel 9 | { 10 | public int CalculatorResult { get; set; } 11 | public bool TransientsEqual { get; set; } 12 | public bool ScopedEqual { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /3. Dependency Injection/UsingDependencyInjection/src/UsingDependencyInjection/web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /4. Middleware/CustomMiddleware/src/CustomMiddleware/CustomMiddleware.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /4. Middleware/CustomMiddleware/src/CustomMiddleware/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace CustomMiddleware 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } -------------------------------------------------------------------------------- /4. Middleware/CustomMiddleware/src/CustomMiddleware/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ApplicationInsights": { 3 | "InstrumentationKey": "" 4 | }, 5 | "Logging": { 6 | "IncludeScopes": false, 7 | "LogLevel": { 8 | "Default": "Debug", 9 | "System": "Information", 10 | "Microsoft": "Information" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /4. Middleware/UsingMVCMiddleware/src/UsingMVCMiddleware/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace UsingMVCMiddleware 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /4. Middleware/UsingMVCMiddleware/src/UsingMVCMiddleware/UsingMVCMiddleware.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /4. Middleware/UsingMVCRoutes/src/UsingMVCRoutes/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | 7 | namespace UsingMVCMiddleware.Controllers 8 | { 9 | public class HomeController : Controller 10 | { 11 | public IActionResult Index() 12 | { 13 | return View(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /4. Middleware/UsingMVCRoutes/src/UsingMVCRoutes/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace UsingMVCRoutes 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /4. Middleware/UsingMVCRoutes/src/UsingMVCRoutes/UsingMVCRoutes.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /4. Middleware/UsingMVCRoutes/src/UsingMVCRoutes/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Home Page"; 3 | } 4 |

Hello from the Default Route!

5 | -------------------------------------------------------------------------------- /4. Middleware/UsingMapWithMiddleware/src/UsingMapWithMiddleware/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace UsingMapWithMiddleware 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /4. Middleware/UsingMapWithMiddleware/src/UsingMapWithMiddleware/UsingMapWithMiddleware.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /5. Controllers/WebApi/src/WebApi/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | 7 | namespace WebApi.Controllers 8 | { 9 | public class HomeController : Controller 10 | { 11 | public IActionResult Index() 12 | { 13 | return View(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /5. Controllers/WebApi/src/WebApi/Models/Customer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace WebApi.Models 7 | { 8 | public class Customer 9 | { 10 | public int Id { get; set; } 11 | public string FirstName { get; set; } 12 | public string LastName { get; set; } 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /5. Controllers/WebApi/src/WebApi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace WebApi 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /5. Controllers/WebApi/src/WebApi/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | 

MVC Controller with Web API Calls

2 |

Customers (from Web API)

3 |
4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /5. Controllers/WebApi/src/WebApi/WebApi.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /5. Controllers/WebApi/src/WebApi/wwwroot/js/main.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 3 | var div = $('#customers'); 4 | $.getJSON('/api/dataservice/customers', function (custs) { 5 | var html = '
    ' 6 | custs.forEach(function (customer) { 7 | html += '
  • ' + customer.firstName + ' ' + customer.lastName + '
  • '; 8 | }); 9 | html += '
'; 10 | div.html(html); 11 | }); 12 | 13 | }()) -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Models/Person.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace TagHelpersAndViewComponents.Models 7 | { 8 | public class Person 9 | { 10 | public string FirstName { get; set; } 11 | public string LastName { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace TagHelpersAndViewComponents 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/TagHelpersAndViewComponents.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "About"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |

Use this area to provide additional information.

8 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Views/Home/Components/Customers/Default.cshtml: -------------------------------------------------------------------------------- 1 | @model List 2 | 3 |
    4 | @foreach (var item in Model) 5 | { 6 |
  • @item
  • 7 | } 8 |
9 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Contact"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |
8 | One Microsoft Way
9 | Redmond, WA 98052-6399
10 | P: 11 | 425.555.0100 12 |
13 | 14 |
15 | Support: Support@example.com
16 | Marketing: Marketing@example.com 17 |
18 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model TagHelpersAndViewComponents.Models.Person 2 | @{ 3 | ViewData["Title"] = "Tag Helpers and ViewComponent Example"; 4 | } 5 | 6 |

Map Tag Helper

7 | 8 | 9 |

10 | 11 | 13 | 14 |
15 |

Customers View Component

16 | 17 | @await Component.InvokeAsync("Customers", new { max = 10 }) 18 | 19 | 20 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using TagHelpersAndViewComponents 2 | @using TagHelpersAndViewComponents.Models 3 | @using TagHelpersAndViewComponents.ViewComponents 4 | 5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 6 | @addTagHelper *, TagHelpersAndViewComponents 7 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ApplicationInsights": { 3 | "InstrumentationKey": "" 4 | }, 5 | "Logging": { 6 | "IncludeScopes": false, 7 | "LogLevel": { 8 | "Default": "Debug", 9 | "System": "Information", 10 | "Microsoft": "Information" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/_references.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/favicon.ico -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/6. Views/TagHelpersAndViewComponents/src/TagHelpersAndViewComponents/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/CookieAuthentication.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace CookieAuthentication.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/Views/Account/Forbidden.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Forbidden"; 3 | } 4 | 5 |

You Shall Not Pass! (forbidden)

6 | 7 | -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Security.Claims; 2 | 3 | @if (!User.Identities.Any(u => u.IsAuthenticated)) 4 | { 5 |

Hello there unauthenticated user!

6 | } 7 | else 8 | { 9 |

10 | Hello @User.Identities.First(u => u.IsAuthenticated && u.HasClaim(c => c.Type == ClaimTypes.Name)).FindFirst(ClaimTypes.Name).Value 11 |

12 |

Claims:

13 |
    14 | @foreach (var claim in User.Claims) 15 | { 16 |
  • @claim.Type: @claim.Value
  • 17 | } 18 |
19 | } -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/Views/Home/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Privacy Policy"; 3 | } 4 |

@ViewData["Title"]

5 | 6 |

Use this page to detail your site's privacy policy.

7 | -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using CookieAuthentication 2 | @using CookieAuthentication.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*" 8 | } 9 | -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/readme.md: -------------------------------------------------------------------------------- 1 | ## Features Show In this Demo 2 | 3 | * Cookie authentication (custom solution) and required middleware (Startup.cs) 4 | * How to create a ClaimsIdentity (Controllers/AccountController.cs) 5 | * How to create a ClaimsPrincipal (Controllers/AccountController.cs) 6 | * How to use HttpContext.SignInAsync() to set a cookie (Controllers/AccountController.cs) 7 | * How to create a cookie validator (CookieValidator.cs) 8 | * How to add multiple claims to a ClaimsPrincipal (Controllers/AccountController.cs) -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}#qrCode{margin:15px}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/CookieAuthentication/CookieAuthentication/wwwroot/favicon.ico -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your JavaScript code. 5 | -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/CookieAuthentication/CookieAuthentication/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /8. Security/CookieAuthentication/CookieAuthentication/wwwroot/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /8. Security/OAuth/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "build", 6 | "command": "dotnet", 7 | "type": "process", 8 | "args": [ 9 | "build", 10 | "${workspaceFolder}/UsingOAuth.csproj" 11 | ], 12 | "problemMatcher": "$msCompile" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /8. Security/OAuth/Controllers/AuthenticationController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Security.Claims; 3 | using System.Threading.Tasks; 4 | using Microsoft.AspNetCore.Authentication; 5 | using Microsoft.AspNetCore.Mvc; 6 | using UsingOAuth.Models; 7 | 8 | public class AuthenticationController : Controller 9 | { 10 | [HttpGet] 11 | public IActionResult Login(string returnUrl = "/") 12 | { 13 | return Challenge(new AuthenticationProperties() { RedirectUri = returnUrl }); 14 | } 15 | } -------------------------------------------------------------------------------- /8. Security/OAuth/Controllers/CustomersController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Authorization; 2 | using Microsoft.AspNetCore.Mvc; 3 | using UsingOAuth.Models; 4 | 5 | namespace UsingOAuth.Controllers 6 | { 7 | [Authorize] 8 | [Route("api/[controller]")] 9 | public class CustomersController : Controller 10 | { 11 | public IActionResult Get() 12 | { 13 | return Ok(new Customer { Id=1, Name="John Doe", City="Phoenix" }); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /8. Security/OAuth/Models/Customer.cs: -------------------------------------------------------------------------------- 1 | namespace UsingOAuth.Models 2 | { 3 | public class Customer 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | public string City { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /8. Security/OAuth/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UsingOAuth.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } -------------------------------------------------------------------------------- /8. Security/OAuth/Models/OAuthUser.cs: -------------------------------------------------------------------------------- 1 | namespace UsingOAuth.Models 2 | { 3 | public class OAuthUser 4 | { 5 | public string Name { get; set; } 6 | public string AccessToken { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /8. Security/OAuth/OAuth.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /8. Security/OAuth/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace UsingOAuth 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /8. Security/OAuth/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "About"; 3 | } 4 |

@ViewData["Title"]

5 |

@ViewData["Message"]

6 | 7 |

Use this area to provide additional information.

8 | -------------------------------------------------------------------------------- /8. Security/OAuth/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Contact"; 3 | } 4 |

@ViewData["Title"]

5 |

@ViewData["Message"]

6 | 7 |
8 | One Microsoft Way
9 | Redmond, WA 98052-6399
10 | P: 11 | 425.555.0100 12 |
13 | 14 |
15 | Support: Support@example.com
16 | Marketing: Marketing@example.com 17 |
18 | -------------------------------------------------------------------------------- /8. Security/OAuth/Views/Home/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Privacy Policy"; 3 | } 4 |

@ViewData["Title"]

5 | 6 |

Use this page to detail your site's privacy policy.

7 | -------------------------------------------------------------------------------- /8. Security/OAuth/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using UsingOAuth 2 | @using UsingOAuth.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /8. Security/OAuth/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /8. Security/OAuth/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /8. Security/OAuth/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*", 8 | "OAuth": { 9 | "GitHub": { 10 | "ClientId": "34ae243e76299298cf52", 11 | "ClientSecret": "0d8513e8a8c5783668973fa3157cb0c2d8825a5f" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /8. Security/OAuth/readme.md: -------------------------------------------------------------------------------- 1 | ## Demonstration of Using OAuth with ASP.NET Core 2 | 3 | 1. Register the custom application at https://github.com/settings/developers 4 | 1. The callback URL should be http://localhost:5000/authentication/signedin 5 | 1. Run the following commands: 6 | 7 | `dotnet restore` 8 | `dotnet build` 9 | `dotnet run` 10 | 11 | 1. Visit http://localhost:5000 12 | 13 | Details about the Github OAuth Apps API: 14 | 15 | https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/ -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}#qrCode{margin:15px}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/OAuth/wwwroot/favicon.ico -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your JavaScript code. 5 | -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/OAuth/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/OAuth/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /8. Security/OAuth/wwwroot/lib/jquery-validation-unobtrusive/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-validation-unobtrusive", 3 | "homepage": "https://github.com/aspnet/jquery-validation-unobtrusive", 4 | "version": "3.2.9", 5 | "_release": "3.2.9", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v3.2.9", 9 | "commit": "a91f5401898e125f10771c5f5f0909d8c4c82396" 10 | }, 11 | "_source": "https://github.com/aspnet/jquery-validation-unobtrusive.git", 12 | "_target": "^3.2.9", 13 | "_originalSource": "jquery-validation-unobtrusive", 14 | "_direct": true 15 | } -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Areas/Identity/Pages/Account/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using UsingIdentity.Areas.Identity.Pages.Account -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Areas/Identity/Pages/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Identity 2 | @using UsingIdentity.Areas.Identity 3 | @using UsingIdentity.Models 4 | @namespace UsingIdentity.Areas.Identity.Pages 5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 6 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Areas/Identity/Pages/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 |  2 | @{ 3 | Layout = "/Views/Shared/_Layout.cshtml"; 4 | } 5 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Data/ApplicationDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 2 | using Microsoft.EntityFrameworkCore; 3 | using UsingIdentity.Models; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Threading.Tasks; 8 | 9 | namespace UsingIdentity.Data 10 | { 11 | public class ApplicationDbContext : IdentityDbContext 12 | { 13 | public ApplicationDbContext(DbContextOptions options) : base(options) { } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Models/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace UsingIdentity.Models 8 | { 9 | public class ApplicationUser : IdentityUser 10 | { 11 | public bool SubscribeToNewsletter { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UsingIdentity.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Security.Claims; 2 | @{ 3 | ViewData["Title"] = "Home Page"; 4 | } 5 | 6 | @if (!User.Identity.IsAuthenticated) 7 | { 8 |

Hello there unauthenticated user!

9 | } 10 | else 11 | { 12 |

13 | Hello @User.Identity.Name 14 |

15 | 16 |

Claims:

17 |
    18 | @foreach (var claim in User.Claims) 19 | { 20 |
  • @claim.Type: @claim.Value
  • 21 | } 22 |
23 | } -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Views/Home/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Privacy Policy"; 3 | } 4 |

@ViewData["Title"]

5 | 6 |

Use this page to detail your site's privacy policy.

7 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using UsingIdentity 2 | @using UsingIdentity.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/solvedIssues.md: -------------------------------------------------------------------------------- 1 | ## No service for type 'Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]' has been registered 2 | 3 | When customizing the IdentityUser (with ApplicationUser for example), you need to make sure that ApplicationUser is used everywhere. 4 | If your code builds and you get the error above, check Shared/_LoginPartial.cshtml and make sure any injected security types 5 | also use your custom user (such as ApplicationUser). -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}#qrCode{margin:15px}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/UsingIdentity/UsingIdentity/wwwroot/favicon.ico -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your JavaScript code. 5 | -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/UsingIdentity/UsingIdentity/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /8. Security/UsingIdentity/UsingIdentity/wwwroot/lib/jquery-validation-unobtrusive/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-validation-unobtrusive", 3 | "homepage": "https://github.com/aspnet/jquery-validation-unobtrusive", 4 | "version": "3.2.9", 5 | "_release": "3.2.9", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v3.2.9", 9 | "commit": "a91f5401898e125f10771c5f5f0909d8c4c82396" 10 | }, 11 | "_source": "https://github.com/aspnet/jquery-validation-unobtrusive.git", 12 | "_target": "^3.2.9", 13 | "_originalSource": "jquery-validation-unobtrusive", 14 | "_direct": true 15 | } -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/EFCRUD.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 1bed25c0-6c42-499e-8823-24bbff9ddf26 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace EFCRUD.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/Repository/IMoviesRepository.cs: -------------------------------------------------------------------------------- 1 | using EFCRUD.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace EFCRUD.Repository 8 | { 9 | public interface IMoviesRepository : IDisposable 10 | { 11 | Task CreateAsync(Movie movie); 12 | Task DeleteAsync(int id); 13 | Task EditAsync(Movie movie); 14 | Task FindAsync(int id); 15 | Task> ListAsync(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using EFCRUD 2 | @using EFCRUD.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*", 8 | "ConnectionStrings": { 9 | "MoviesSqlServerConnectionString": "Server=(localdb)\\mssqllocaldb;Database=Movies;Trusted_Connection=True;MultipleActiveResultSets=true", 10 | "MoviesSqliteConnectionString": "Data Source=Movies.sqlite" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/readme.md: -------------------------------------------------------------------------------- 1 | ## Create, Read, Create, Delete (CRUD) Demo with EF Core 2 | 3 | * Learn how to create a model class 4 | * Learn how to create a DbContext class (Repository/MoviesDbContext.cs) 5 | * Learn how to create a data repository (data access) class that uses DbContext for CRUD (Repository/MoviesRepository) 6 | * Use MoviesRepository to interact with the database and display/capture data (Controllers/MoviesController.cs) 7 | * Learn how to register EF middleware (Startup.cs) 8 | * Learn how to inject custom types using dependency injection (Startup.cs) -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}#qrCode{margin:15px}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCRUD/EFCRUD/wwwroot/favicon.ico -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your JavaScript code. 5 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCRUD/EFCRUD/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /9. EntityFramework/EFCRUD/EFCRUD/wwwroot/lib/jquery-validation-unobtrusive/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-validation-unobtrusive", 3 | "homepage": "https://github.com/aspnet/jquery-validation-unobtrusive", 4 | "version": "3.2.9", 5 | "_release": "3.2.9", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v3.2.9", 9 | "commit": "a91f5401898e125f10771c5f5f0909d8c4c82396" 10 | }, 11 | "_source": "https://github.com/aspnet/jquery-validation-unobtrusive.git", 12 | "_target": "^3.2.9", 13 | "_originalSource": "jquery-validation-unobtrusive", 14 | "_direct": true 15 | } -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/EFCore.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Models/Distributor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace EFCore.Models 7 | { 8 | public class Distributor 9 | { 10 | public int Id { get; set; } 11 | public string Name { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Models/Movie.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace EFCore.Models 8 | { 9 | public class Movie 10 | { 11 | public int Id { get; set; } 12 | public string Title { get; set; } 13 | public string Director { get; set; } 14 | 15 | public virtual Distributor Distributor { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Movies.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCore/src/EFCore/Movies.sqlite -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace EFCore 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Repository/IMoviesRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using EFCore.Models; 4 | 5 | namespace EFCore.Repository 6 | { 7 | public interface IMoviesRepository 8 | { 9 | Task> GetMovies(); 10 | Task> GetRawMovies(); 11 | Task> GetDistributors(); 12 | } 13 | } -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Views/Distributors/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model List 2 | @{ 3 | ViewData["Title"] = "Distributors"; 4 | } 5 | 6 |

Distributors

7 |
8 | 9 | 10 | 11 | 12 | @foreach (var dist in Model) 13 | { 14 | 15 | 16 | 17 | } 18 |
Name
@dist.Name
19 |
20 | 21 | View Movies 22 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using EFCore 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "MoviesSqlite": "Data Source=Movies.sqlite", 4 | "Movies": "Server=(localdb)\\mssqllocaldb;Database=Movies;Trusted_Connection=True;MultipleActiveResultSets=true" 5 | }, 6 | "ApplicationInsights": { 7 | "InstrumentationKey": "" 8 | }, 9 | "Logging": { 10 | "IncludeScopes": false, 11 | "LogLevel": { 12 | "Default": "Debug", 13 | "System": "Information", 14 | "Microsoft": "Information" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/_references.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCore/src/EFCore/wwwroot/favicon.ico -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCore/src/EFCore/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /9. EntityFramework/EFCore/src/EFCore/wwwroot/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/CreatingAndUsingCustomMiddleware.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace CreatingAndUsingCustomMiddleware 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "About"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |

Use this area to provide additional information.

8 | -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using CreatingAndUsingCustomMiddleware 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Creating And Using Custom Middleware/End/CreatingAndUsingCustomMiddleware/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | .env 3 | .git 4 | .gitignore 5 | .vs 6 | .vscode 7 | docker-compose.yml 8 | docker-compose.*.yml 9 | */bin 10 | */obj -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular-ASPNET-Core-CustomersService/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !obj/Docker/publish/* 3 | !obj/Docker/empty/ 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.ModelBinding; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace MonolithToMicroservices.Models 8 | { 9 | public class ApiResponse 10 | { 11 | public bool Status { get; set; } 12 | public Customer Customer { get; set; } 13 | public ModelStateDictionary ModelState { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Models/ApiSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public class ApiSettings : IApiSettings 9 | { 10 | public string CustomersUri { get; set; } 11 | public string LookupUri { get; set; } 12 | public string CustomerOrdersUri { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Models/CustomerViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public class CustomerViewModel 9 | { 10 | public Customer Customer { get; set; } 11 | public List States { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Models/IApiSettings.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public interface IApiSettings 4 | { 5 | string CustomersUri { get; set; } 6 | string LookupUri { get; set; } 7 | string CustomerOrdersUri { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public class Order 4 | { 5 | public int Id { get; set; } 6 | public string Product { get; set; } 7 | public int Quantity { get; set; } 8 | public decimal Price { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Repository/ILookupRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using MonolithToMicroservices.Models; 4 | 5 | namespace MonolithToMicroservices.Repository 6 | { 7 | public interface ILookupRepository 8 | { 9 | Task> GetStatesAsync(); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using MonolithToMicroservices 2 | @using MonolithToMicroservices.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/app.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | ENTRYPOINT ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ApiSettings": { 9 | "LookupUri": "http://lookup.api/api/v1/lookup", 10 | "CustomersUri": "http://customers.api/api/v1/customers", 11 | "CustomerOrdersUri": "http://customers.api/api/v1/orders" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/favicon.ico -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/female.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/male.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/people.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Microservices/MonolithToMicroservices/wwwroot/images/people.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/README.md: -------------------------------------------------------------------------------- 1 | # Angular, ASP.NET Core Customers Service Application 2 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Customers.API.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | ..\..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Customers.API.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | ENTRYPOINT ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Customers.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Customers.sqlite -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.ModelBinding; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Customers.API.Models 8 | { 9 | public class ApiResponse 10 | { 11 | public bool Status { get; set; } 12 | public Customer Customer { get; set; } 13 | public ModelStateDictionary ModelState { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace Customers.API.Models { 2 | public class Order { 3 | public int Id { get; set; } 4 | public string Product { get; set; } 5 | public int Quantity { get; set; } 6 | public decimal Price { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Models/PagingResult.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Customers.API.Models 7 | { 8 | public struct PagingResult 9 | { 10 | public IEnumerable Records { get; set; } 11 | public int TotalRecords { get; set; } 12 | 13 | public PagingResult(IEnumerable items, int totalRecords) 14 | { 15 | TotalRecords = totalRecords; 16 | Records = items; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace Customers.API.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Repository/CustomersDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using Customers.API.Models; 3 | 4 | namespace Customers.API.Repository 5 | { 6 | public class CustomersDbContext : DbContext 7 | { 8 | public DbSet Customers { get; set; } 9 | public DbSet Orders { get; set; } 10 | 11 | public CustomersDbContext (DbContextOptions options) : base(options) { } 12 | } 13 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Repository/ICustomerOrdersRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Customers.API.Models; 4 | 5 | namespace Customers.API.Repository 6 | { 7 | public interface ICustomerOrdersRepository 8 | { 9 | Task GetCustomerOrdersAsync(int id); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/Repository/IOrdersRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Customers.API.Models; 4 | 5 | namespace Customers.API.Repository 6 | { 7 | public interface IOrdersRepository 8 | { 9 | Task GetCustomerOrdersAsync(int id); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Customers.API/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ConnectionStrings": { 9 | "CustomersSqliteConnectionString": "Data Source=Customers.sqlite" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !obj/Docker/publish/* 3 | !obj/Docker/empty/ 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Lookup.API.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | ..\..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Lookup.API.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | ENTRYPOINT ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Lookup.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Lookup.sqlite -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Lookup.API.Models 7 | { 8 | public class ApiResponse 9 | { 10 | public bool Status { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace Lookup.API.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Repository/ILookupRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Lookup.API.Models; 4 | 5 | namespace Lookup.API.Repository 6 | { 7 | public interface ILookupRepository 8 | { 9 | Task> GetStatesAsync(); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/Repository/LookupDbContext.cs: -------------------------------------------------------------------------------- 1 | using Lookup.API.Models; 2 | using Microsoft.EntityFrameworkCore; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lookup.API.Repository 9 | { 10 | public class LookupDbContext : DbContext 11 | { 12 | public DbSet States { get; set; } 13 | 14 | public LookupDbContext(DbContextOptions options) : base(options) { } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/Services/Lookup.API/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ConnectionStrings": { 9 | "LookupSqliteConnectionString": "Data Source=Lookup.sqlite" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/docker-compose.override.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | customers.api: 5 | environment: 6 | - ASPNETCORE_ENVIRONMENT=Development 7 | ports: 8 | - "80" 9 | 10 | lookup.api: 11 | environment: 12 | - ASPNETCORE_ENVIRONMENT=Development 13 | ports: 14 | - "80" 15 | 16 | monolithtomicroservices: 17 | environment: 18 | - ASPNETCORE_ENVIRONMENT=Development 19 | ports: 20 | - "80" 21 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Microservices/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | customers.api: 5 | image: customers.api 6 | build: 7 | context: ./Services/Customers.API 8 | dockerfile: Dockerfile 9 | 10 | lookup.api: 11 | image: lookup.api 12 | build: 13 | context: ./Services/Lookup.API 14 | dockerfile: Dockerfile 15 | 16 | monolithtomicroservices: 17 | image: monolithtomicroservices 18 | build: 19 | context: ./MonolithToMicroservices 20 | dockerfile: Dockerfile 21 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular-ASPNET-Core-CustomersService/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Customers.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Customers.sqlite -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Models/CustomerViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public class CustomerViewModel 9 | { 10 | public Customer Customer { get; set; } 11 | public List States { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models { 2 | public class Order { 3 | public int Id { get; set; } 4 | public string Product { get; set; } 5 | public int Quantity { get; set; } 6 | public decimal Price { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models { 2 | public class State { 3 | public int Id { get; set; } 4 | public string Abbreviation { get; set; } 5 | public string Name { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/MonolithToMicroservices.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Repository/CustomersDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using MonolithToMicroservices.Models; 3 | 4 | namespace MonolithToMicroservices.Repository 5 | { 6 | public class CustomersDbContext : DbContext 7 | { 8 | public DbSet Customers { get; set; } 9 | public DbSet Orders { get; set; } 10 | public DbSet States { get; set; } 11 | 12 | public CustomersDbContext (DbContextOptions options) : base(options) { } 13 | } 14 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Repository/ILookupRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using MonolithToMicroservices.Models; 4 | 5 | namespace MonolithToMicroservices.Repository 6 | { 7 | public interface ILookupRepository 8 | { 9 | Task> GetStatesAsync(); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Repository/IOrdersRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using MonolithToMicroservices.Models; 4 | 5 | namespace MonolithToMicroservices.Repository 6 | { 7 | public interface IOrdersRepository 8 | { 9 | Task GetCustomerOrdersAsync(int id); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using MonolithToMicroservices 2 | @using MonolithToMicroservices.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/aspnetcore.development.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:5000 7 | 8 | EXPOSE 5000 9 | 10 | WORKDIR /var/www/aspnetcoreapp 11 | 12 | CMD ["/bin/bash", "-c", "dotnet restore && dotnet run"] 13 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | 5 | web: 6 | container_name: 'aspnetcoreapp' 7 | image: 'aspnetcoreapp' 8 | build: 9 | context: . 10 | dockerfile: aspnetcore.development.dockerfile 11 | volumes: 12 | - .:/var/www/aspnetcoreapp 13 | ports: 14 | - "5000:5000" 15 | networks: 16 | - aspnetcoreapp-network 17 | 18 | networks: 19 | aspnetcoreapp-network: 20 | driver: bridge 21 | 22 | 23 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/favicon.ico -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/female.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/male.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/people.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/Begin/Monolithic/MonolithToMicroservices/wwwroot/images/people.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/Begin/Monolithic/README.md: -------------------------------------------------------------------------------- 1 | # Angular, ASP.NET Core Customers Service Application 2 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | .env 3 | .git 4 | .gitignore 5 | .vs 6 | .vscode 7 | docker-compose.yml 8 | docker-compose.*.yml 9 | */bin 10 | */obj -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular-ASPNET-Core-CustomersService/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !obj/Docker/publish/* 3 | !obj/Docker/empty/ 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/Angular_ASPNETCore_CustomersService.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.ModelBinding; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace MonolithToMicroservices.Models 8 | { 9 | public class ApiResponse 10 | { 11 | public bool Status { get; set; } 12 | public Customer Customer { get; set; } 13 | public ModelStateDictionary ModelState { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Models/ApiSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public class ApiSettings : IApiSettings 9 | { 10 | public string CustomersUri { get; set; } 11 | public string LookupUri { get; set; } 12 | public string CustomerOrdersUri { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Models/CustomerViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace MonolithToMicroservices.Models 7 | { 8 | public class CustomerViewModel 9 | { 10 | public Customer Customer { get; set; } 11 | public List States { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Models/IApiSettings.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public interface IApiSettings 4 | { 5 | string CustomersUri { get; set; } 6 | string LookupUri { get; set; } 7 | string CustomerOrdersUri { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public class Order 4 | { 5 | public int Id { get; set; } 6 | public string Product { get; set; } 7 | public int Quantity { get; set; } 8 | public decimal Price { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace MonolithToMicroservices.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Repository/ILookupRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using MonolithToMicroservices.Models; 4 | 5 | namespace MonolithToMicroservices.Repository 6 | { 7 | public interface ILookupRepository 8 | { 9 | Task> GetStatesAsync(); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using MonolithToMicroservices 2 | @using MonolithToMicroservices.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/app.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | ENTRYPOINT ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ApiSettings": { 9 | "LookupUri": "http://lookup.api/api/v1/lookup", 10 | "CustomersUri": "http://customers.api/api/v1/customers", 11 | "CustomerOrdersUri": "http://customers.api/api/v1/orders" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/favicon.ico -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/female.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/male.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/people.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/End/Microservices/MonolithToMicroservices/wwwroot/images/people.png -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/README.md: -------------------------------------------------------------------------------- 1 | # Angular, ASP.NET Core Customers Service Application 2 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Customers.API.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | ..\..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Customers.API.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | ENTRYPOINT ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Customers.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Customers.sqlite -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.ModelBinding; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Customers.API.Models 8 | { 9 | public class ApiResponse 10 | { 11 | public bool Status { get; set; } 12 | public Customer Customer { get; set; } 13 | public ModelStateDictionary ModelState { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace Customers.API.Models { 2 | public class Order { 3 | public int Id { get; set; } 4 | public string Product { get; set; } 5 | public int Quantity { get; set; } 6 | public decimal Price { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Models/PagingResult.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Customers.API.Models 7 | { 8 | public struct PagingResult 9 | { 10 | public IEnumerable Records { get; set; } 11 | public int TotalRecords { get; set; } 12 | 13 | public PagingResult(IEnumerable items, int totalRecords) 14 | { 15 | TotalRecords = totalRecords; 16 | Records = items; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace Customers.API.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Repository/CustomersDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using Customers.API.Models; 3 | 4 | namespace Customers.API.Repository 5 | { 6 | public class CustomersDbContext : DbContext 7 | { 8 | public DbSet Customers { get; set; } 9 | public DbSet Orders { get; set; } 10 | 11 | public CustomersDbContext (DbContextOptions options) : base(options) { } 12 | } 13 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Repository/ICustomerOrdersRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Customers.API.Models; 4 | 5 | namespace Customers.API.Repository 6 | { 7 | public interface ICustomerOrdersRepository 8 | { 9 | Task GetCustomerOrdersAsync(int id); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/Repository/IOrdersRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Customers.API.Models; 4 | 5 | namespace Customers.API.Repository 6 | { 7 | public interface IOrdersRepository 8 | { 9 | Task GetCustomerOrdersAsync(int id); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Customers.API/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ConnectionStrings": { 9 | "CustomersSqliteConnectionString": "Data Source=Customers.sqlite" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !obj/Docker/publish/* 3 | !obj/Docker/empty/ 4 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Lookup.API.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | ..\..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Lookup.API.dev.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV DOTNET_USE_POLLING_FILE_WATCHER=1 6 | ENV ASPNETCORE_URLS=http://*:80 7 | 8 | WORKDIR /var/www/app 9 | 10 | ENTRYPOINT ["/bin/bash", "-c", "dotnet restore && dotnet watch run"] 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Lookup.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Lookup.sqlite -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Models/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Lookup.API.Models 7 | { 8 | public class ApiResponse 9 | { 10 | public bool Status { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace Lookup.API.Models 2 | { 3 | public class State 4 | { 5 | public int Id { get; set; } 6 | public string Abbreviation { get; set; } 7 | public string Name { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Repository/ILookupRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | using Lookup.API.Models; 4 | 5 | namespace Lookup.API.Repository 6 | { 7 | public interface ILookupRepository 8 | { 9 | Task> GetStatesAsync(); 10 | } 11 | } -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/Repository/LookupDbContext.cs: -------------------------------------------------------------------------------- 1 | using Lookup.API.Models; 2 | using Microsoft.EntityFrameworkCore; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lookup.API.Repository 9 | { 10 | public class LookupDbContext : DbContext 11 | { 12 | public DbSet States { get; set; } 13 | 14 | public LookupDbContext(DbContextOptions options) : base(options) { } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/Services/Lookup.API/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | }, 8 | "ConnectionStrings": { 9 | "LookupSqliteConnectionString": "Data Source=Lookup.sqlite" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/docker-compose.override.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | customers.api: 5 | environment: 6 | - ASPNETCORE_ENVIRONMENT=Development 7 | ports: 8 | - "80" 9 | 10 | lookup.api: 11 | environment: 12 | - ASPNETCORE_ENVIRONMENT=Development 13 | ports: 14 | - "80" 15 | 16 | monolithtomicroservices: 17 | environment: 18 | - ASPNETCORE_ENVIRONMENT=Development 19 | ports: 20 | - "80" 21 | -------------------------------------------------------------------------------- /Labs/Monolith to Microservices/End/Microservices/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | customers.api: 5 | image: customers.api 6 | build: 7 | context: ./Services/Customers.API 8 | dockerfile: Dockerfile 9 | 10 | lookup.api: 11 | image: lookup.api 12 | build: 13 | context: ./Services/Lookup.API 14 | dockerfile: Dockerfile 15 | 16 | monolithtomicroservices: 17 | image: monolithtomicroservices 18 | build: 19 | context: ./MonolithToMicroservices 20 | dockerfile: Dockerfile 21 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/.docker/wait-for-postgres.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | host="$1" 6 | shift 7 | cmd="$@" 8 | 9 | until psql -h "$host" -U "postgres" -c '\l'; do 10 | >&2 echo "Postgres is unavailable - sleeping" 11 | sleep 1 12 | done 13 | 14 | >&2 echo "Postgres is up - executing command" 15 | exec $cmd 16 | 17 | #Can call from docker-compose.yml by adding the following to dependent service entrypoint: ./.docker/wait-for-postgres.sh postgres:5432 -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/AspNetCorePostgreSQLDockerApp.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Controllers/CustomersController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | 7 | namespace AspNetCorePostgreSQLDockerApp.Controllers 8 | { 9 | public class CustomersController : Controller 10 | { 11 | 12 | public ActionResult Index() 13 | { 14 | return View(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Models/DockerCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp.Models { 5 | 6 | public class DockerCommand { 7 | public int Id { get; set; } 8 | public string Command { get; set; } 9 | public string Description { get; set; } 10 | public List Examples { get; set; } 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Models/DockerCommandExample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AspNetCorePostgreSQLDockerApp.Models { 4 | 5 | public class DockerCommandExample { 6 | public int Id { get; set; } 7 | public string Example { get; set; } 8 | public string Description { get; set; } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace AspNetCorePostgreSQLDockerApp.Models { 2 | public class Order { 3 | public int Id { get; set; } 4 | public string Product { get; set; } 5 | public int Quantity { get; set; } 6 | public decimal Price { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace AspNetCorePostgreSQLDockerApp.Models { 2 | public class State { 3 | public int Id { get; set; } 4 | public string Abbreviation { get; set; } 5 | public string Name { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Repository/CustomersDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using AspNetCorePostgreSQLDockerApp.Models; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp.Repository 5 | { 6 | public class CustomersDbContext : DbContext 7 | { 8 | public DbSet Customers { get; set; } 9 | public DbSet Orders { get; set; } 10 | public DbSet States { get; set; } 11 | 12 | public CustomersDbContext (DbContextOptions options) : base(options) { } 13 | } 14 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Repository/DockerCommandsDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using AspNetCorePostgreSQLDockerApp.Models; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp.Repository 5 | { 6 | public class DockerCommandsDbContext : DbContext 7 | { 8 | public DbSet DockerCommands { get; set; } 9 | 10 | public DockerCommandsDbContext(DbContextOptions options) : base(options) { } 11 | } 12 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Repository/IDockerCommandsRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | 4 | using AspNetCorePostgreSQLDockerApp.Models; 5 | 6 | namespace AspNetCorePostgreSQLDockerApp.Repository 7 | { 8 | public interface IDockerCommandsRepository 9 | { 10 | Task> GetDockerCommandsAsync(); 11 | 12 | Task InsertDockerCommandAsync(DockerCommand command); 13 | } 14 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AspNetCorePostgreSQLDockerApp 2 | @using AspNetCorePostgreSQLDockerApp.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/aspnetcore.dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/aspnetcore.dockerfile -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/docker-compose.yml -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "lib": [ "es2015", "dom" ], 10 | "removeComments": false, 11 | "noImplicitAny": true, 12 | "suppressImplicitAnyIndexErrors": true 13 | }, 14 | "exclude": [ 15 | "node_modules" 16 | ] 17 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/_references.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | /// 8 | /// 9 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | moduleId: module.id, 5 | selector: 'app-container', 6 | template: `` 7 | }) 8 | export class AppComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/app/app.routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterModule, Routes } from '@angular/router'; 2 | 3 | import { CustomersComponent } from './customers/customers.component'; 4 | 5 | const app_routes: Routes = [ 6 | { path: '', pathMatch:'full', redirectTo: '/customers' }, 7 | { path: 'Customers', component: CustomersComponent } 8 | ]; 9 | 10 | export const app_routing = RouterModule.forRoot(app_routes); -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { enableProdMode } from '@angular/core'; 3 | 4 | import { AppModule } from './app.module'; 5 | 6 | //enableProdMode(); //Uncomment for production 7 | platformBrowserDynamic().bootstrapModule(AppModule) 8 | .then((success: any) => console.log('App bootstrapped')) 9 | .catch((err: any) => console.error(err)); 10 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea,.alert-danger{max-width:300px}.toolbar-item a{cursor:pointer}input.ng-invalid,select.ng-invalid{border-left:5px solid #a94442}input.ng-valid,select.ng-valid{border-left:5px solid #42a948} -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-01.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-02.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-01-Azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-01-Azure.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-02-VS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-02-VS.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=/Users/DanWahlin/Dropbox/Projects/GitHub/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js.map -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version":3, 3 | "file":"/Users/DanWahlin/Dropbox/Projects/GitHub/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js", 4 | "lineCount":1, 5 | "mappings":"", 6 | "sources":[], 7 | "names":[] 8 | } 9 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/Begin/AspNetCorePostgreSQLDockerApp/wwwroot/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/.docker/wait-for-postgres.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | host="$1" 6 | shift 7 | cmd="$@" 8 | 9 | until psql -h "$host" -U "postgres" -c '\l'; do 10 | >&2 echo "Postgres is unavailable - sleeping" 11 | sleep 1 12 | done 13 | 14 | >&2 echo "Postgres is up - executing command" 15 | exec $cmd 16 | 17 | #Can call from docker-compose.yml by adding the following to dependent service entrypoint: ./.docker/wait-for-postgres.sh postgres:5432 -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/AspNetCorePostgreSQLDockerApp.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Controllers/CustomersController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | 7 | namespace AspNetCorePostgreSQLDockerApp.Controllers 8 | { 9 | public class CustomersController : Controller 10 | { 11 | 12 | public ActionResult Index() 13 | { 14 | return View(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Models/DockerCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp.Models { 5 | 6 | public class DockerCommand { 7 | public int Id { get; set; } 8 | public string Command { get; set; } 9 | public string Description { get; set; } 10 | public List Examples { get; set; } 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Models/DockerCommandExample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AspNetCorePostgreSQLDockerApp.Models { 4 | 5 | public class DockerCommandExample { 6 | public int Id { get; set; } 7 | public string Example { get; set; } 8 | public string Description { get; set; } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Models/Order.cs: -------------------------------------------------------------------------------- 1 | namespace AspNetCorePostgreSQLDockerApp.Models { 2 | public class Order { 3 | public int Id { get; set; } 4 | public string Product { get; set; } 5 | public int Quantity { get; set; } 6 | public decimal Price { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Models/State.cs: -------------------------------------------------------------------------------- 1 | namespace AspNetCorePostgreSQLDockerApp.Models { 2 | public class State { 3 | public int Id { get; set; } 4 | public string Abbreviation { get; set; } 5 | public string Name { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Repository/CustomersDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using AspNetCorePostgreSQLDockerApp.Models; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp.Repository 5 | { 6 | public class CustomersDbContext : DbContext 7 | { 8 | public DbSet Customers { get; set; } 9 | public DbSet Orders { get; set; } 10 | public DbSet States { get; set; } 11 | 12 | public CustomersDbContext (DbContextOptions options) : base(options) { } 13 | } 14 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Repository/DockerCommandsDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using AspNetCorePostgreSQLDockerApp.Models; 3 | 4 | namespace AspNetCorePostgreSQLDockerApp.Repository 5 | { 6 | public class DockerCommandsDbContext : DbContext 7 | { 8 | public DbSet DockerCommands { get; set; } 9 | 10 | public DockerCommandsDbContext(DbContextOptions options) : base(options) { } 11 | } 12 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Repository/IDockerCommandsRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | 4 | using AspNetCorePostgreSQLDockerApp.Models; 5 | 6 | namespace AspNetCorePostgreSQLDockerApp.Repository 7 | { 8 | public interface IDockerCommandsRepository 9 | { 10 | Task> GetDockerCommandsAsync(); 11 | 12 | Task InsertDockerCommandAsync(DockerCommand command); 13 | } 14 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AspNetCorePostgreSQLDockerApp 2 | @using AspNetCorePostgreSQLDockerApp.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/aspnetcore.dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/dotnet:sdk 2 | 3 | LABEL author="Dan Wahlin" 4 | 5 | ENV ASPNETCORE_URLS=http://*:5000 6 | 7 | WORKDIR /var/www/aspnetcoreapp 8 | 9 | COPY . . 10 | 11 | EXPOSE 5000 12 | 13 | ENTRYPOINT ["/bin/bash", "-c", "dotnet restore && dotnet run"] 14 | 15 | # Note that this is only for demo and is intended to keep things simple. 16 | # A multi-stage dockerfile would normally be used here to build the .dll and use 17 | # the microsoft/dotnet:aspnetcore-runtime image for the final image 18 | 19 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "lib": [ "es2015", "dom" ], 10 | "removeComments": false, 11 | "noImplicitAny": true, 12 | "suppressImplicitAnyIndexErrors": true 13 | }, 14 | "exclude": [ 15 | "node_modules" 16 | ] 17 | } -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/_references.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | /// 8 | /// 9 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | moduleId: module.id, 5 | selector: 'app-container', 6 | template: `` 7 | }) 8 | export class AppComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/app/app.routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterModule, Routes } from '@angular/router'; 2 | 3 | import { CustomersComponent } from './customers/customers.component'; 4 | 5 | const app_routes: Routes = [ 6 | { path: '', pathMatch:'full', redirectTo: '/customers' }, 7 | { path: 'Customers', component: CustomersComponent } 8 | ]; 9 | 10 | export const app_routing = RouterModule.forRoot(app_routes); -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { enableProdMode } from '@angular/core'; 3 | 4 | import { AppModule } from './app.module'; 5 | 6 | //enableProdMode(); //Uncomment for production 7 | platformBrowserDynamic().bootstrapModule(AppModule) 8 | .then((success: any) => console.log('App bootstrapped')) 9 | .catch((err: any) => console.error(err)); 10 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea,.alert-danger{max-width:300px}.toolbar-item a{cursor:pointer}input.ng-invalid,select.ng-invalid{border-left:5px solid #a94442}input.ng-valid,select.ng-valid{border-left:5px solid #42a948} -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-01.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/ASP-NET-Banners-02.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-01-Azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-01-Azure.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-02-VS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/images/Banner-02-VS.png -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=/Users/DanWahlin/Dropbox/Projects/GitHub/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js.map -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version":3, 3 | "file":"/Users/DanWahlin/Dropbox/Projects/GitHub/AspNetCorePostgreSQLDockerApp/wwwroot/js/site.min.js", 4 | "lineCount":1, 5 | "mappings":"", 6 | "sources":[], 7 | "names":[] 8 | } 9 | -------------------------------------------------------------------------------- /Labs/Orchestrating Containers with Docker Compose/End/AspNetCorePostgreSQLDockerApp/wwwroot/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Models/Customer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace UsingEntityFrameworkCore.Models 7 | { 8 | public class Customer 9 | { 10 | public int Id { get; set; } 11 | public string Name { get; set; } 12 | public string City { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace UsingEntityFrameworkCore 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Repository/CustomersDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using UsingEntityFrameworkCore.Models; 7 | 8 | namespace UsingEntityFrameworkCore.Repository 9 | { 10 | public class CustomersDbContext : DbContext 11 | { 12 | public DbSet Customers { get; set; } 13 | 14 | public CustomersDbContext(DbContextOptions options) : base(options) { } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Repository/ICustomersRepository.cs: -------------------------------------------------------------------------------- 1 | using UsingEntityFrameworkCore.Models; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | 5 | namespace UsingEntityFrameworkCore.Repository { 6 | 7 | public interface ICustomersRepository 8 | { 9 | Task InsertAndRetrieveCustomerAsync(); 10 | Task> GetCustomersAsync(); 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/UsingEntityFrameworkCore.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "About"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |

Use this area to provide additional information.

8 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Contact"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |
8 | One Microsoft Way
9 | Redmond, WA 98052-6399
10 | P: 11 | 425.555.0100 12 |
13 | 14 |
15 | Support: Support@example.com
16 | Marketing: Marketing@example.com 17 |
18 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model UsingEntityFrameworkCore.Models.Customer 2 | @* @model IEnumerable *@ 3 | @{ 4 | ViewData["Title"] = "Home Page"; 5 | } 6 | 7 | 8 |

Customer Details

9 | @Model.Name @Model.City 10 | 11 | 12 | @* 13 |

Customers

14 |
    15 | @foreach (var cust in Model) { 16 |
  • @cust.Name @cust.City
  • 17 | } 18 |
19 | *@ 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using UsingEntityFrameworkCore 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/customers.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/customers.sqlite -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Using Entity Framework Core/End/UsingEntityFrameworkCore/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Labs/Using Web API/End/UsingWebAPI/Models/Customer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace UsingWebAPI.Models 7 | { 8 | public class Customer 9 | { 10 | public int Id { get; set; } 11 | public string FirstName { get; set; } 12 | public string LastName { get; set; } 13 | public string City { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Labs/Using Web API/End/UsingWebAPI/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace UsingWebAPI 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateWebHostBuilder(args).Build().Run(); 11 | } 12 | 13 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Labs/Using Web API/End/UsingWebAPI/UsingWebAPI.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Labs/Using Web API/End/UsingWebAPI/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/ASPNET-Core-And-Docker.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/ASPNET-Core-And-Docker.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | namespace Labs 4 | { 5 | public class Program 6 | { 7 | public static void Main(string[] args) 8 | { 9 | CreateWebHostBuilder(args).Build().Run(); 10 | } 11 | 12 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 13 | WebHost.CreateDefaultBuilder(args) 14 | .UseStartup(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "About"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |

Use this area to provide additional information.

8 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Contact"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |
8 | One Microsoft Way
9 | Redmond, WA 98052-6399
10 | P: 11 | 425.555.0100 12 |
13 | 14 |
15 | Support: Support@example.com
16 | Marketing: Marketing@example.com 17 |
18 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Labs 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/ASPNET-Core-And-Docker.Views.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/ASPNET-Core-And-Docker.Views.dll -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/ASPNET-Core-And-Docker.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/ASPNET-Core-And-Docker.dll -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/ASPNET-Core-And-Docker.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.1", 4 | "framework": { 5 | "name": "Microsoft.AspNetCore.App", 6 | "version": "2.1.1" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} 2 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/dist/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} 2 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanWahlin/ASP.NETCoreDemos/3c733264b4e56d811113dc9726cc3c1ebd920fc6/Labs/Working with ASP.NET Core Images and Containers/End/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ASP.NET Core Demos 2 | 3 | Demos showing key ASP.NET features. 4 | --------------------------------------------------------------------------------