Menu
On December 4th including and. In this post, I will be taking one of the projects used in the ASP.NET Basics series and converting it from ASP.NET 2.1.x to the new 2.2 version of ASP.NET Core. This will all be based on the.
The code before any changes can be found. In the sample solution, this guide will be working with the Contacts project only. Installation Head over to the and download the new version of the.NET Core SDK for version 2.2 which is available for Window, Linux and Mac. After installation is done run the following command if you want to verify the SDK is installed. Dotnet -list-sdks You should see 2.2.100 listed.
AWS Toolkit for Visual Studio User Guide. Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon.
If you are like me you might also see a few preview versions that would be good to uninstall. If you are using Visual Studio make sure you are on at least version 15.9. If not updates can be downloaded from. Project File Changes Right-click on the project and select Edit projectName.csproj.
Change the TargetFramework to netcoreapp2.2. Before: netcoreapp2.1 After: netcoreapp2.2 Update any Microsoft packages with a version to 2.2.x the following is an example. Before: After: If you want to use the new IIS in-process hosting model you also need to add the following line to a property group. InProcess The following is my full csproj for reference. Netcoreapp2.2 InProcess aspnet-Contacts-cd2c7b27-e79c-43c7-b3ef-1ecb04374b70 Startup Changes In Startup.cs update the compatibility version to enable the new 2.2 features. Before: services.AddMvc.SetCompatibilityVersion(CompatibilityVersion.Version21); After: services.AddMvc.SetCompatibilityVersion(CompatibilityVersion.Version22); Wrapping Up As with the migration to 2.1 the move to 2.2 is really easy to do.
Make sure you check out the for more details that may have not been covered by this project. The code in its final state can be found. This morning I set out to try the Scaffold Identity option that was added as part of the ASP.NET 2.1 release.
The for this feature is really good so I didn’t think I would have any issue, but I was wrong. Sample Application To start I used the.NET CLI to create a new application using the following command. Dotnet new razor I then opened the project in Visual Studio. Then following the docs I right-clicked on the project and expanded the Add option, but the New Scaffolded item is missing. Sample Application 2 Since the project created using the CLI didn’t have the option I thought I would try creating a new project in Visual Studio. From in Visual Studio using File New Project. Under Visual C# Web select ASP.NET Core Web Application and click OK.
Select Web Application and then click OK. After the creation process finishes I right-clicked on the project and expanded the Add option and the New Scaffolded item is there. What’s the difference? After trying a lot of different things I finally got to the point of looking at the csproj files for both projects. Here is the csproj from the Visual Studio create project.
Netcoreapp2.1 And the csproj from the CLI created project. Netcoreapp2.2 Notice that the CLI created project is targeting.NET Core 2.2 which is in preview at the time of this writing.
Not surprisingly Visual Studio has some limits on what can be done using preview bits. Wrapping Up I can’t believe that I let having preview bits installed cause me issues again.
I’m guessing that most people aren’t installing the previews so hopefully, this isn’t an issue most of you will have to deal with. If you do want to use the CLI to create an application targeting a specific version of.NET Core it can be done using a global.json file. Check out for more information. This is the fourth post in a series on deploying a very simple ASP.NET Core application different cloud provides.
This post is going to be dealing with setup and deployment to. (this post) Sample Application The sample application ended up becoming its own blog post since it looks like the easiest deployment to DigitalOcean for.NET is going to be using Docker.
Check out my post to get your application setup with Docker and published to a registry. DigitalOcean Head over to and sign up for an account. Using that link will get you $10 in free credit (I will get some credit too if you spend $25 or more, but the main point is to get you some credit to get started with).
As part of the sign-up process, you will have to enter a credit card. It won’t be charged as long as you don’t go over your free credit. After you finish the sign-up process you will be dropped on the dashboard for your account. Click the Create Droplet button to get started. On the next page select One-click apps, and then the Docker option. Scroll down and select your Droplet size. Since this is a basic example and will never have any real traffic I went with the cheapest option which is $5 a month.
There are a lot of options, but with the two selections above we can take the defaults are the rest of them for this sample. Scroll all the way down and click the Create button. This will drop you back to your Dashboard and you will have your new Droplet listed. Click on the name of the Droplet to get to its details. There is a lot of information on this page, but the thing we are interested in is the Console link in the top right of the summary. A new browser window should open with a console that is running on your Droplet. If you are like me and took the defaults when creating your Droplet then you will have gotten an email from DigitalOcean with the username and password you can use to log in.
You will be forced to change your password on your first log in. Installing the sample application Now that our Droplet is up and we are logged in it is time to get our application up and running. All of this section is going to be happening in the console of the Droplet. First, use the following command to log in with Docker. Docker login Next, we need to pull the image for our application (your image name will be different). Docker pull elanderson/testrepository The following command can then be used to run the application.p 80:80 in the command is binding port 80 from the container to port 80 on the host. Hopefully, if you took the defaults on everything this will just work for you, but if not you will tweak this part of the command.
Docker run -p 80:80 elanderson/testrepository Wrapping Up There were some details to work out, but after getting over those humps Docker is amazing. This post was about DigitalOcean, but I could take the image used in this post and deploy it to any Linux image that supports ASP.NET Core and Docker. Hopefully, I will find an excuse to play around more with Docker soon. This is the third post in a series on deploying a very simple ASP.NET Core application to the major cloud provides. This post is going to be dealing with setup and deployment to Microsoft Azure. The following is are the other posts in this series.
(this post) Sample Application This is the same as the first post in the series, but am including it in case you missed that post. The sample application that we will be deploying is the basic Razor Pages applications created using the.NET CLI. The following commands are what I used to create the application, create a solution, and add the project to the solution. I ran all these commands in a CloudSample directory. Dotnet new razor dotnet new sln dotnet sln add CloudSample.csproj Microsoft Azure The rest of this post is going to be based on the official documentation.
I already have all the Azure related stuff installed and have used it before, so it will be much easier for me to miss a step. If that happens please leave a comment and I will get the post fixed.
Azure Development for Visual Studio The additional tools need to use Azure from Visual Studio are part of the Visual Studio installer. I’m assuming that Visual Studio is already installed. To add Azure select the Tools Get Tools and Features menu. After the installer launches close all instances of Visual Studio. From the list of features select Azure development and click the Modify button to start the installation. Sign up for Azure While the tools are installing is a good time to sign up for Azure if you don’t already have an account. You can sign up.
This is one of the parts that doesn’t work well when you already have an account, but the link above should guide you through the process. Application Publication Hope back in Visual Studio and open the solution you want to publish. In the Solution Explorer window right-click on the project and select the Publish menu option. This will show the publish target dialog where you can select what you want to publish to. In this example, we are going to be publishing to an App Service.
The details area select Create New option. Then click the Publish button to move to the next screen The next step collects the information needed to Create an App Service. The first thing to set is the account in the upper right corner of the screen.
This could already be set based on how you are logged in to Visual Studio. Next, click the New link next to the Resource Group and enter the name you want to use. Then click the New link next to the Hosting Plan. In the Hosting Plan dialog, you get options to give the plan a name, pick your hosting location, and the size. For the Size, I recommend starting with the Free option. After all the options are set click OK. This will return you to the Create App Service dialog where you can click the Create button to deploy the application.
After deployment finishes the site will open in your default browser. Wrapping Up For me using Azure from Visual Studio is the simplest experience of all the cloud providers I have tried so far.
I don’t guess that is surprising since Microsoft controls both products. Forgetting the integration with Visual Studio it seems that Azure App Services, Google App Engine, and Amazon Elastic Beanstalk are all on par with each other. As always don’t forget to shutdown/delete the associated resources for your test project to avoid changes. This is the second post in a series on deploying a very simple ASP.NET Core application to the major cloud provides.
This post is going to be dealing with setup and deployment to Amazon Web Services (AWS). The following is are the other posts in this series. (this post) Sample Application This is the same as the first post in the series, but am including it in case you missed that post. The sample application that we will be deploying is the basic Razor Pages applications created using the.NET CLI. The following commands are what I used to create the application, create a solution, and add the project to the solution. I ran all these commands in a CloudSample directory. Dotnet new razor dotnet new sln dotnet sln add CloudSample.csproj Amazon Web Services The rest of this post is going to be based on a couple of pieces of documentation from Amazon for the.
I will be walking through the whole process but wanted to make sure you had access to the same information this post is based on. AWS Toolkit for Visual Studio Amazon provides a Visual Studio extension to aid in interactions with their platform from Visual Studio. To install open the Tools Extensions and Updates menu. Select Online from the left side of the dialog and then search for AWS and select AWS Toolkit for Visual Studio 2017.
Click download, close Visual Studio to trigger installation, and restart Visual Studio after the extension’s installation has completed. When you open Visual Studio back up you should see the AWS Getting Started page with has link to the IAM Users page in the AWS Console. This will land you on the following page where you have to either sign into your account or sign up for a new account. After you get through the sign-up/in process you will be at the IAM console where we are going to add a new user by clicking the Add user button.
On the next page fill out the User name you want to use and check the Programmatic access check box and then click the Next: Permissions button. The next page is all about what permissions the user will have which is handled via groups. Since my account doesn’t have any groups I need to create one using the Create group button. On the Create group form enter the Group name you want to use. Next, use the search box for Policy type to find the policies related to Elastic Beanstalk.
I have selected the full access policy for this sample, but if it is more than just a test this would require more research to see if that is the proper policy to use or not. When done click the Create group button. This will return you to the group page from above.
Click the Next: Review button to continue. The next page is just a review of the options selected on previous pages. Click the Create user button to continue.
The last page has a button to Download.csv, click it and download the file. Back over in Visual Studio on the AWS Getting Started page click the Import from csv file. Browse and select the csv download above. Then click the Save and Close button on the AWS Getting Started page. After that is complete you should see the AWS Explorer window. Sign up for AWS Elastic Beanstalk If you notice in the AWS Explorer screenshot above the Please sign up for this service under AWS Elastic Beanstalk. Double click the Please sign up for this service it will open a new browser window.
On this window click the Get started with AWS Elastic Beanstalk button. The next page will prompt for payment information. After entering your information click the Secure Submit button. The next step is an automated phone call to verify that you who you say you are. The final step in signing up is to select your plan.
![2017 2017](http://1.bp.blogspot.com/-v3OR7Yvni84/U5Ahxv0MLQI/AAAAAAAAETI/r3Hgf_gl0kw/s1600/tools.png)
Select the Free plan to finish your sign up. Publishing from Visual Studio Now that sign up is complete hope back in Visual Studio and open the solution you want to publish. In the Solution Explorer window right-click on the project and click Publish to AWS Elastic Beanstalk.
This will open the Publish to Amazon Web Services dialog. I just took the defaults since this is a new application and I don’t have any existing enviroments. Click the Next button to continue. On the next screen, an Application Name and Environment Name are needed.
Fill them in and click Next. The next screen is where you can configure the type and size of the EC2 instance that will back your application. I used the defaults. As always click Next when ready.
The next screen allows you to configure permissions. You will never guess, but I used the defaults and clicked Next. The next screen allows you to pick your project build configuration and framework to use. The defaults are set based your project so they should be right. Click the Finish button.
The final screen is to review all the options. If you are happy with everything click the Deploy button. During deployment, I saw the following error in my output window.
Caught AmazonIdentityManagementServiceException whilst setting up role: User:myUser/CloudSampleBlog is not authorized to perform: iam:GetInstanceProfile on resource: instance profile aws-elasticbeanstalk-ec2-role Caught Exception whilst setting up service role: User: myUser/CloudSampleBlog is not authorized to perform: iam:PutRolePolicy on resource: role aws-elasticbeanstalk-service-role This turned out to not really be an issue. I went to my and the application was there and in the process of deploying. The whole process took around 5 minutes. Unlike with Google, I did have to find the URL in the dashboard instead of a browser being opened to the URL automatically. Wrapping Up Initial setup with AWS is much more complex than with Google. Redeployment was in the two-minute range which is much faster than what I saw with Google. Overall it seems that Elastic Beanstalk is on par with Google’s App Engine.
Don’t forget to shut down and/or delete your test project when you are finished to make sure you don’t get charged. This is the first post in what is going to be a series on deploying a very simple ASP.NET Core application to the major cloud providers starting with Google’s cloud. This series was inspired by a question from one of my coworkers about the ease-of-use differences for.NET between the cloud providers.
The other posts in the series: (this post) Sample Application The sample application that we will be deploying is the basic Razor Pages applications created using the.NET CLI. The following commands are what I used to create the application, create a solution, and add the project to the solution. I ran all these commands in a CloudSample directory.
Dotnet new razor dotnet new sln dotnet sln add CloudSample.csproj Google Cloud Platform The rest of this post is going to be based on information from Google which can be found. Google Cloud SDK Installation The first step is to download and install the Google Cloud SDK which can be found. I’m walking through these steps for Windows, but the previous link has instructions for Linux and Mac as well. After downloading and run the installer, and be patient it takes a while to run. When it is done you should see the following screen. Make sure and leave the bottom two boxes checked as gcloud init must be complete to get everything working as it should. Click the Finish button and a console will open and walk you through the initialization process.
The first step in the process will open a web browser and ask you to login to your Google account. After logging in you will be asked for a cloud project to use. It should look something like the following. You are logged in as: your account.
Pick cloud project to use: 1 api-project-05 2 blogbackup-141901 3 oval-botany-94217 4 Create a new project Please enter numeric choice or text value (must exactly match list item): We want to select Create a new project which is option 4 in my case. When prompted for a project ID I just hit enter and it let me out of the process so I don’t think a project is actually required at this point so that is a little confusing. Google Cloud Tools for Visual Studio Installation Google provides a Visual Studio extension that makes interacting with their platform simpler from within Visual Studio.
To install open the Tools Extensions and Updates menu. On the left select Online and then search for Google. Next, select Google Cloud Tools for Visual Studio. Click download, close Visual Studio to trigger installation, and restart Visual Studio. Now that the extension is installed we need to connect it to an account. Using the Tools Google Cloud Tools Manage Accounts menu to launch the Manage Accounts Dialog. Next click Add Account.
This will launch a web browser where you will need to complete the account add. After the account auth completes Visual Studio should show the Google Cloud Explorer window logged in the account you selected. Create an App Engine Project Open and click Create. On the next page, you will need to give the project a name and then click Create. On the next page select.NET as your language.
And select the location you want your application hosted in and click next. If you aren’t already signed up then the next step signs you up for a 12 month trial with $300 worth of credit. Click the Signu up for free trial button to continue.
On the next screen, for the trial, you have to select your county as well as agree to the terms. The next screen is a summary of your account. Review the information and click the Start my free trial button to continue.
Deploy from Visual Studio In the Google Cloud Explorer window in Visual Studio select the project you just created in the drop-down. If you don’t see your new project try clicking the refresh button in the upper left-hand side of the window.
Now that you have the correct project selected switch over to the Solution Explorer window and right click on your project and select Publish to Google Cloud. On the next screen select App Engine Flex. Then on the next screen click publish. My first deployment took a really long time so don’t worry if you end up waiting a while (5 to 10 minutes). I tried a second deployment and it took just as long so I guess that is just how long it takes. When deployment finished it should open your site in a web browser.
Wrapping Up After the initial set of installs and setup, Google Cloud with ASP.NET Core is pretty straightforward. The deployment time seems way too long, but that is really the only complaint I have. Don’t forget to shut down and/or delete your test project when you are finished to make sure it doesn’t use up your credits. I have a couple of computers I work between for the samples I use on this blog and when switching to between of them I got the following error last week. The project doesn’t know how to run the profile IIS Express.
I verified the project would still run on the other computer with no issues. I also verified that on the computer with the issues the project would still work using dotnet run from the command line still worked. Next, I went to verify the project properties. Here I noticed a strange thing on the computer with the error the Debug tab of the project properties was missing a lot of setting. The following is a screen shot of the computer with the issues.
And here is the same tab on the same project, but from a different computer. The cause After more time that I would like to admit I was able to track down the issue. On the computer with the issue, I often work on projects that are very large which tend to slow down Visual Studio pretty bad.
In an effort to speed things up a bit I when through and disabled all the extensions that I could including the Microsoft Azure App Service Tools. Turns out that disabling the previous extension caused the Microsft ASP.NET and Web Tools extension to be disabled as well (with no warning). The solution The only way I was able to get the project to work properly was to enable both the Microsft ASP.NET and Web Tools extension AND the Microsoft Azure App Service Tools extension. I am not sure why the Microsft ASP.NET and Web Tools extension need the Microsoft Azure App Service Tools extension but based on my experience they are related in some way.