So much quality content for free!! Just crazy. You make my life as an aspiring developer way easier. I have already rebuilt many of your programms. Thank you! I m sure, you spent lots of effort and time creating this content.
Wonderful. I only have a few months of experience with .NET Core and had always some confusion with this topic. Your video clarified my ideas a lot, I really liked the simplicity, structure and straight to the point of your explanations.
When it comes to teaching C# I cant just think in anyone else. IamTimCorey is a channel that has built us up from lots of view points. Transparency, simplicity, experience and excellence. Even my mama says: "..Oh you're looking at this kind guy again"😅 I strongly wish this channel to keep growing, and all the efforts that you're putting in to be paid off with anything that can be valuable to you and yours. Your community thanks you Tim, and so do I. Greetings from Barcelona
I took the full course. What I found most valuable was the section on security, particularly, production secrets. The free video focuses heavily on the development environment, but being responsible for deployment as well, I wanted to know more about the production environment.
I Swear learning C# for a person coming from languages like python or JS is really frustrating and difficult. The documentation of Microsoft is really bad in terms on navigation and linking topics in a good hierarchy. You are the best in explaining the topics that can be understood by anyone!!! So much grateful for your efforts, thanks from the bottom of my heart.
Just beginning, and only getting traction with programming through this tutorials. I've been learning in .Net Framework and got comfy with the xml config file... then tried a .Net Core app and just failed. Searching around to learn how appsettings.json worked and finding little that helped. Just last night, I wondered if you'd do a video so I could get a fundamental understanding. Wake up, and hey presto! Between you and Ben Eater, I'll understand! Great teaching for a slow learner!
Jesus @Tim, I’ve been a .net developer for 2 years. I thought I knew all there was about the app.config / web.config files. Next level stuff there Tim. Love this channel, probably the most valuable like and subscribe channel. I have for sure developed a different solution to things because of having to deal with the app.config file. We store our connection strings, and having a service account password in plain text is obviously not good. Needed this video 8 months ago.
Thank you for this free Introduction to AppSettings. It clears up some of my questions regarding the overall structure of Projects in .Net and how the different components fit together, although I would really love to see a video on that as well. I did look through your youtube videos allas I didn't find one that seems to cover that. If it is already in existence that is great, could you please point it out to me, if not I personally think that would make a very interesting subject to see a video about, uncovering a bit more of the "magic" that seems to be going on in Visual Studio at some times. After this video I decided I wanted to know even more about this subject so I bought your course, thank you for creating all this wonderful content.
Thank you Tim for your special offer. Just bought it on your web page and I' am totally impressed. This will make a lot of challenges much easier to solve :)
As always, great content Tim. Just a small correction. I think while reading configuration from various sources, there is no "termination logic" applied. I mean it's not like "I found this setting here, not gonna check the next sources". On contrary is the opposite, it goes through all sources and keeps overwriting values as it finds them. For example, appsettings.Development.json is the last in the chain, that's why those values override the other ones. Simply because the values get overwritten. The secrets are the last ones actually.
Happy birthday to the best C# teacher on RUclips. Always a pleasure watching your tutorials. Now I'm thinking maybe forcing my data access layer(normal class library project) to hold my connection strings is a bad idea. P.S. I only did it thinking if I have to change my frontend later on it would benefit me. Lol
Hi Tim ..again grt content and way you present them as usual, Indeed it is a useful tool to use these keys keeping in mind the purpose we need to use yo when it comes to working real quick in agile with devops now-a-days in company Project,
You should check out the Dev Questions series, where I answer questions developers and prospective developers have: ruclips.net/p/PLLWMQd6PeGY2G8Q0d_yOPc_CocyqrFRoZ I'm on screen for those videos every Thursday.
Hi Tim, Great videos. I am looking forward to any videos on the integration of any third party payment services like Stripe or TransferWise into .NET CORE 3.1 specifically. Thanks!
Do you have a tutorial on how to handle Blazor Server App connection timeouts? Running on local works great, but when deployed to production, the connected state times out quickly. Thx for this video.
It sounds like a server configuration issue. It should not time out quickly. That does not sound like something you would configure in C# (you can change timeouts on the C# side, though).
I was quite disappointed you didn't tackle the ASPNETCORE_ENVIRONMENT variable and how it can be set to stage,production,development on different deployments.
Happy happy birthday Tim... I wish the best for you and your family!!! Thank you very much for your efforts and all this wonderful job fokng those videos... I really love your courses and the easy and clear way that you teach... 🥰 Pdt... I have a question...since Im doing the fundamentals course...and I want to get the course that you are offering here... how long time I will have access to this new course if I bought it? I want the gift...but I will not finish fundamentals in the next days....
Happy Belated Birthday Tim !!! Very useful video as always. I've successfully configured appsetting.json in WPF app after many research online. But I'm struggling to put it to work in MvvmCross app. Because the M and the VM are in a class library while the V is in WPF project. Very confusing. Looks like the bald area in my head will get larger after this. LOL I humbly ask if you could add it to the list of your future videos, along with DI, View Navigation and View inside a view (to create a Menu bar like TimCo Retail Manager app) for MvvmCross app. Thank you and wish you have a nice day Tim!
Hello Tim , Thank you for your amazing content. would u please make a syncfusion tutorial, like how to use Syncfusion controls in your WPF application or a short tutorial about Metro Studio :) thx again
What's the best way to save config settings to appsetting.json? From what I'm reading the IConfigurationRoot does not allow writing, it's read-only. So is there another way to save my settings to appsettings.json?
The question is why are you trying to save it to appsettings.json? Typically, changeable settings would be stored in a database. If you really need to change appsettings.json, you would need to open it up like a text file, make the changes to the JSON structure, and re-save it.
@@IAmTimCorey Thanks for the reply, Tim. I really would like to have a separate file for local application settings (pre database settings) like `appsettings.custom.json` or something. It would be a file dedicated to writing values back. I would stay out of appsettings.json and leave that as designed (read-only). I don't want the app to be 100% dependant on a DB though. I think I'll end up just making a class wrapper to take care of saving changes to a separate file like that though as you suggested.
It is different than MVC or Razor pages, but it is not true that it does not scale well. I'm not sure where you are getting that from but Microsoft did load testing in a moderate Azure Web App instance and found that they could host 20,000 simultaneous users on one web app. If you need more than that, you can offload the SignalR and/or scale the number of App instances. And that was in .NET Core 3.0 before they added performance optimizations in .NET Core 3.1 (and more are coming in .NET 5 in November). Now remember, that 20,000 number is not hits per day, it is simultaneous connections. Very few sites have that many connections at once. If you have a site that has an expectation of that many simultaneous connections or more, you already need to think about load balancing, app scaling, and more, regardless of what you choose for your web application type.
@@IAmTimCorey But all of the UI interaction you do in Blazor server needs to be rendered on the server, compared to doing it with JS on the client. The latency of that server rendering is a problem for a global website. It provides terrible UX. Also, requiring an active websocket connection is more resource intensive than just serving plain html and JS. The SignalR connection also poses issues when people are browsing your website in places with spotty connection.
It sounds like you are guessing here because server side rendering is faster than client side. The most popular language in the world for the web is PHP. It runs some of the largest sites out there. It is a server side rendered language that isn’t even precompiled. As for the spotty Internet connection, that will be an issue for any web app but yes, disrupting the SignalR connection would be bad. That’s why the newest update coming out in November has active retry.
@@IAmTimCorey I think there's a misunderstanding here. I'm not arguing about the initial server side rendering vs client side rendering. I'm arguing about the latency introduced for every action the user performs on the website that involves dynamic content. Compared to a server side rendered JS framework with dynamic hydration, Blazor can be dog slow and uses more resources. Even the creators of Blazor are well aware of this.
hey, Mr Tim is filtering data with Linq a good idea? or we should write filtering statement inside the SQL command? I think writing one select statement and then use Linq for filtering make things easier, does this has any noticeable performance difference?
Let SQL do what it does best and then let C# do what it does best. That means sort and filter in SQL whenever possible and use LINQ only after you have done as much as you can in SQL.
Maybe you could make a video talking about the ups and downs of developing and debugging a c# backend with Docker. Since Visual Studio adds an easy way to add Docker support.
@@IAmTimCorey Already excited 😁. I havent seen any good practical videos talking about Docker and Asp.Net. Most videos are focused only on Docker as a whole. But as you often say, other videos clearly lack context. Which makes it harder to integrate and see the value. Also I believe, Docker is and will be the next big thing. Because it's easier to make a new instance of a programm then to get every concurrency perfect. More CPU cores every year. PS: I have deep respect for people like you, who put quality videos for free online. I mean you take the time and talk about the important stuff even if it's less popular. When I was experimenting with Java, I had to watch trough hasty and unclear indian tutorials, which was a pain for me. Since then, I never touched Java again 😆. I rather learn C# from you! You deserve a special place in the developer community! Greetings from Switzerland 🇨🇭
I cover Dependency Injection in .NET Core (ConfigureService) in a course: www.iamtimcorey.com/p/dotnet-core-dependency-injection-in-depth I also use it in various videos, but I don't specifically focus on it.
I am glad you are enjoying my content. As for the price, I know it can be expensive for some. That's what pays for the free content, though. Take advantage of everything that is free because some people were able to afford the paid content.
Hello, nice video, I enter here because I have an issue, I have a different connectionString to use in my local project than the one that is used in the Production Project... how can I do to configure for instances a connection string in development mode than production mode, because when I push my changes to the repo the connection String of my AppSettings.Json is been changed with my local Connection Strings but that's not what I want
What if you have to obtain specific values from the Windows Registry and need those values to determine whether a database column is set or not. Instead of pulling from the Registry to display a value in a razor page in a BlazorWASM project, is there a way to store keys and values from the Registry safely in an appsettings.json file?@IAmTimCorey
Happy birthday Tim! Thanks for sharing this. It gives a good veiw. What I really miss are user settings. I will see if this topic is covered in the course. For user settings, the user must be able to change the value of a setting from the UI. After looking for a number of solutions, I now use the appsettings.json for defaults and the good old registry for other settings. (WPF desktop applications only). As far as I can see in the course contents, I see there is a lesson on an Options class. Does this cover user settings and how to set things up that a user can change settings?
I’d love to see an answer to this, it doesn’t appear to be as simple as comparing strings in the appsettings stored values with the authenticated user string
I'm trying to figure out how to make an appsettings.Staging.json and have it run on our staging server but I don't know how to set the environment variable to Staging when we run on the staging server.
I got confused about the learning order a bit Tim. You mentioned learning 4 things in order in your latest video as following; C#, Blazor, Docker, and Azure, but here we are seeing Blazor in this video when we are trying to learn C# as a first step. As I'm trying to learn C# and everything is so messy for me, this ordering misconception makes me confused now, could you enlighten me, please?
36:46 So how would the environment variable in launchSettings.json be set to production when deploying to production? Wont you need to edit that yourself and recompile the app?
We don't deploy launchSettings.json to production. That's why the environment setting defaults to "production". You don't need to do anything when deploying. Since the file doesn't get deployed, the setting isn't there so the default is used.
@@IAmTimCorey That makes sense now, and I also read the officials docs as well. How would you recommend setting the environment for non-prod environments? Update web.config? Set a system environment variable on the non-prod server? This part still has me scratching my head and Idk if there's a general answer to this
Thanks for this video! One question: How do you read the settings from secrets.json? I moved my connection string to this file, but my app can't seem to access this (or any setting) inside the secrets.json file. I've enabled with " dotnet user-secrets init " and it compiles fine, just have no clue as how it is read (it's not done automatically, so I figure there's some more settings in Visual Studio 2022 that need to be configured for this to work). Thanks again! forgot to mention: this is for a console application - the config is via the following: IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json", true, true).Build(); DBConn = config.GetConnectionString("DBConn");
I figured it out what was missing. IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json", true, true).AddUserSecrets("your key here").Build();
Secrets.json is only for development. It isn't for deployed applications. When you deploy a console app, you will need to have your secret in appsettings.json or another accessible location. Yes, it isn't secure if you have access to the machine, but that's true either way.
Excellent lesson Mr. Corey! But can you kindly tell why we need to use appsettings.development.json when we can just use secrets.json? Is it because appsettings.development are accessible to everybody working on a project and secrets.json are only on our local machine for us exclusively? Then what’s the point of using basic appsettings.json anyway? In which situations we need to use what? Feeling a tad confused.
Correct. Appsettings.development.json gets put into source control. These ae all options. You don't have to use every option. Don't try to force it. Just figure out what works best for you. For me, I most often use appsettings.json and secrets.json. However, every once in a while I'll use one of the other options.
Correct, although what is in your secrets.json is typically your local secrets (ones for your local testing environment), so you would be putting your production values in Azure. But yes, the same property names.
Hi Tim, Thank you so much one of important topics. I have an .Net 6 Worker Service Project in VS 2022. In my appsettings.json I defined a custom object with one key and value. "LocalSqlServer": { "SqlServerName":"AVD111234" } . I tried fetching this value in my program.cs file by _config.GetSection("LocalSqlServer:SqlServerName").Value . The value comes as null. I tried different ways to fetch it using _config object, also tried how you fetch the same in this video, but no success so far. I don't know where I am going wrong. Do you think it works differently for worker service project ? Or Am I doing any mistake in code. Please help. Thank you in advance.
if anybody on the entire internet deserves my money for a course, that person is you, you're the man
Thank you!
So much quality content for free!! Just crazy. You make my life as an aspiring developer way easier. I have already rebuilt many of your programms. Thank you! I m sure, you spent lots of effort and time creating this content.
Great to hear! It is my pleasure
Happy birthday for yesterday Tim. hope you had a good one. Love from South Africa...
Thank you!
Wonderful. I only have a few months of experience with .NET Core and had always some confusion with this topic. Your video clarified my ideas a lot, I really liked the simplicity, structure and straight to the point of your explanations.
I am glad it was helpful.
It's amazing the way he talks. Sometimes I think that is an old friend. :-)
Thank you. I appreciate that.
You have been a massive help to my career. You deserve all your flowers. Thank you Tim Corey
I'm glad my content has been so helpful!
Your channel is my best discovery of the year
Awesome!
When it comes to teaching C# I cant just think in anyone else. IamTimCorey is a channel that has built us up from lots of view points. Transparency, simplicity, experience and excellence. Even my mama says: "..Oh you're looking at this kind guy again"😅
I strongly wish this channel to keep growing, and all the efforts that you're putting in to be paid off with anything that can be valuable to you and yours.
Your community thanks you Tim, and so do I. Greetings from Barcelona
I appreciate the kind words.
Я хотел Вам сказать, что у Вас отличный, понятный и логичный английский. ;) курс по сишарп. ВЫ ЛУЧШИЙ. Вам спасибо.
Спасибо, я ценю это. Я добавил ваше предложение в свой список.
I took the full course. What I found most valuable was the section on security, particularly, production secrets. The free video focuses heavily on the development environment, but being responsible for deployment as well, I wanted to know more about the production environment.
The user secrets was an oh my God there is something like that moment!!! Thank you. And your qualify is amazing thanks again.
You're so welcome!
OK, so I've just finished with your the getting started with c# list and wanted to say thanks, you really know how to teach
Awesome, thank you!
Happy Birthday and Congrats on your subscriber count Tim. I've learnt more from you in 3 years than from 15 years in the industry!!
Wow, thanks!
I Swear learning C# for a person coming from languages like python or JS is really frustrating and difficult. The documentation of Microsoft is really bad in terms on navigation and linking topics in a good hierarchy. You are the best in explaining the topics that can be understood by anyone!!! So much grateful for your efforts, thanks from the bottom of my heart.
I'm glad my content has been helpful. Have you seen the Microsoft documentation recently, though? Check out docs.com
Always, I found learning material on best way and easy understanding.
Great to hear!
Happy birthday Tim, your videos always make me more confident on C#, thanks a lot
My pleasure! Thank you!
Happy Birthday to You!!!Wish you many enthusiasm to share valuable knowledge and get the same much thanks for your great job!
Thank you very much!
Happy birthday!
Such a great video, full course is for tomorrow!
Have fun!
Just beginning, and only getting traction with programming through this tutorials. I've been learning in .Net Framework and got comfy with the xml config file... then tried a .Net Core app and just failed. Searching around to learn how appsettings.json worked and finding little that helped. Just last night, I wondered if you'd do a video so I could get a fundamental understanding. Wake up, and hey presto! Between you and Ben Eater, I'll understand! Great teaching for a slow learner!
Hang in there, you can do this!
Wishing you a many more happy, blessed and fulfilling years ahead. HAPPYH BIRTH DAY TO YOU, MY MENTOR!
Thank you.
Jesus @Tim, I’ve been a .net developer for 2 years. I thought I knew all there was about the app.config / web.config files. Next level stuff there Tim. Love this channel, probably the most valuable like and subscribe channel.
I have for sure developed a different solution to things because of having to deal with the app.config file. We store our connection strings, and having a service account password in plain text is obviously not good. Needed this video 8 months ago.
I am glad it was helpful, even if you needed it earlier.
Happy belated birthday! I appreciate you for sharing your knowledge with everyone.
You are so welcome
Thanks for a clear and practical guide!
We are glad it helped.
Wish you a very happy birthday Tim. May god bless you and your family 🙏
Thank you for your time and efforts 😊
Many thanks!
Happy birthday Tim! Thank you for all your efforts!
Thank you too!
Loved the video shared it with some juniors devs. You really set up a foundations for them. Keep up the good work
Thanks, will do!
happy birthday Tim!!!! thanks for another amazing video!
Thanks again!
Learned a lot from you Tim. THANK YOU! And Happy Birthday!
Awesome! Thank you!
Thank you for this free Introduction to AppSettings. It clears up some of my questions regarding the overall structure of Projects in .Net and how the different components fit together, although I would really love to see a video on that as well. I did look through your youtube videos allas I didn't find one that seems to cover that. If it is already in existence that is great, could you please point it out to me, if not I personally think that would make a very interesting subject to see a video about, uncovering a bit more of the "magic" that seems to be going on in Visual Studio at some times.
After this video I decided I wanted to know even more about this subject so I bought your course, thank you for creating all this wonderful content.
Thank you for buying in and for the course suggestion, added to the list!
Happy birthday, Tim. I really enjoy your videos.
Thank you very much!
Thank you for such a clear and well explained overview of IConfiguration and the apsettings hierarchy! Appreciate it! Cheers.
Thanks for watching!
Happy Belated Birthday! Hope you had a great one! Hope to see the Multi-Project soon :)
Thank you!
Happy Birthday, Tim.
Thank you!
Thank you Tim for your special offer. Just bought it on your web page and I' am totally impressed. This will make a lot of challenges much easier to solve :)
Awesome! I am glad it is so helpful.
Happy birthday Tim!
Thank you!
Happy Birthday Tim
Thank you!
Thanks a lot Tim, and happy belated birthday from me in South Africa
Thank you!
Happy birthday Tim
Thank you!
Big congrats on hitting 10k customers.
Thank you!
You share a birthday with my youngest daughter! Happy Birthday!
So cool! Thank you!
Happy Belated Birthday Tim !!!
Thank you!
How can we handle launchsettings.json settings in Blazor Webassembly apps similarly to what you've shown here?
As always, great content Tim.
Just a small correction. I think while reading configuration from various sources, there is no "termination logic" applied. I mean it's not like "I found this setting here, not gonna check the next sources". On contrary is the opposite, it goes through all sources and keeps overwriting values as it finds them. For example, appsettings.Development.json is the last in the chain, that's why those values override the other ones. Simply because the values get overwritten. The secrets are the last ones actually.
Happy birthday to the best C# teacher on RUclips. Always a pleasure watching your tutorials.
Now I'm thinking maybe forcing my data access layer(normal class library project) to hold my connection strings is a bad idea.
P.S. I only did it thinking if I have to change my frontend later on it would benefit me. Lol
I am glad you see the value
Great content! Thanks, Tim!
You are welcome.
Happy birthday tim..
Thank you for the video..
Thank you! ... and you are welcome.
Happy delayed birthday great info. I hadn't thought that the appsettings could be that much useful.
They are pretty awesome.
Thank you very much for your content.
You are welcome.
"For those of you that are building apps in production", I'm proud to say I take that as literally as possible
watching 14 hours after upload, and I hope I'm not too late to say "Happy belated birthday Tim!"
Thank you!
Happy Birthday, man! Hope you will be doing well :)
Big thank you for your videos ^^
Thank you very much!
Hi Tim ..again grt content and way you present them as usual, Indeed it is a useful tool to use these keys keeping in mind the purpose we need to use yo when it comes to working real quick in agile with devops now-a-days in company Project,
Glad you like them!
programming is a costly affair and you make it affordable for us
It is my pleasure
Thanks Good Man, this was very usefull.
You are welcome.
Happy birthday Tim, can please make a tutorial about clean architecture on asp.net core
I will add it to the list. Thanks for the suggestion.
Excellent stuff!
Thanks!
@IAmTimCorey do you have a promo to the depth course?
Not currently, no. If you are on the mailing list, you will hear about any discounts.
Hi Tim. Another great Video! Thank you.
By the way, 20 September was my birthday too! And of course... Happy Birthday!
Happy birthday!
This is the first time I have seen you. 😀
You should check out the Dev Questions series, where I answer questions developers and prospective developers have: ruclips.net/p/PLLWMQd6PeGY2G8Q0d_yOPc_CocyqrFRoZ I'm on screen for those videos every Thursday.
Belated happy birthday Tim. =)
Thank you!
belated happy birthday, my friend
Thanks so much
Gr8 Content Loved it!!!!!!
Glad you liked it!
Happy birthday to you, I hope you make video about design pattern CQRS using Dapper
I will add it to the list. Thanks for the suggestion.
Amazing video. Loved it! (y)
Thanks!
Amazing as always!
Thanks!
love you, very nice videos.
Thanks!
Thanks for this.
You are welcome.
Really Great!
Thanks!
Hi Tim, Great videos. I am looking forward to any videos on the integration of any third party payment services like Stripe or TransferWise into .NET CORE 3.1 specifically. Thanks!
I will add it to the list. Thanks for the suggestion.
Do you have a tutorial on how to handle Blazor Server App connection timeouts? Running on local works great, but when deployed to production, the connected state times out quickly.
Thx for this video.
It sounds like a server configuration issue. It should not time out quickly. That does not sound like something you would configure in C# (you can change timeouts on the C# side, though).
Hi Tim, great video! Can we update "appSettings"?
Thank you! :)
You are welcome.
I was quite disappointed you didn't tackle the ASPNETCORE_ENVIRONMENT variable and how it can be set to stage,production,development on different deployments.
32:55 very important launchsettings is where the environment are set
For local development, yes. When you publish, this information is not included, which is why it reverts to production by default.
Happy happy birthday Tim... I wish the best for you and your family!!! Thank you very much for your efforts and all this wonderful job fokng those videos... I really love your courses and the easy and clear way that you teach... 🥰
Pdt... I have a question...since Im doing the fundamentals course...and I want to get the course that you are offering here... how long time I will have access to this new course if I bought it? I want the gift...but I will not finish fundamentals in the next days....
Thank you very much!
By the way, when you purchase a course, you get lifetime access to it.
Happy Belated Birthday Tim !!!
Very useful video as always.
I've successfully configured appsetting.json in WPF app after many research online.
But I'm struggling to put it to work in MvvmCross app.
Because the M and the VM are in a class library while the V is in WPF project. Very confusing. Looks like the bald area in my head will get larger after this. LOL
I humbly ask if you could add it to the list of your future videos, along with DI, View Navigation and View inside a view (to create a Menu bar like TimCo Retail Manager app) for MvvmCross app.
Thank you and wish you have a nice day Tim!
Noted and added to the list. Thanks
Hello Tim ,
Thank you for your amazing content.
would u please make a syncfusion tutorial, like how to use Syncfusion controls in your WPF application or a short tutorial about Metro Studio :)
thx again
I will add it to the list. Thanks for the suggestion.
@@IAmTimCorey Thank you :)
Thanks!
Thank you!
What's the best way to save config settings to appsetting.json? From what I'm reading the IConfigurationRoot does not allow writing, it's read-only. So is there another way to save my settings to appsettings.json?
The question is why are you trying to save it to appsettings.json? Typically, changeable settings would be stored in a database. If you really need to change appsettings.json, you would need to open it up like a text file, make the changes to the JSON structure, and re-save it.
@@IAmTimCorey Thanks for the reply, Tim. I really would like to have a separate file for local application settings (pre database settings) like `appsettings.custom.json` or something. It would be a file dedicated to writing values back. I would stay out of appsettings.json and leave that as designed (read-only). I don't want the app to be 100% dependant on a DB though. I think I'll end up just making a class wrapper to take care of saving changes to a separate file like that though as you suggested.
Is worth mentioning that Blazor Server is a very different beast than MVC or Razor Pages. It does not scale as well for public facing website.
It is different than MVC or Razor pages, but it is not true that it does not scale well. I'm not sure where you are getting that from but Microsoft did load testing in a moderate Azure Web App instance and found that they could host 20,000 simultaneous users on one web app. If you need more than that, you can offload the SignalR and/or scale the number of App instances. And that was in .NET Core 3.0 before they added performance optimizations in .NET Core 3.1 (and more are coming in .NET 5 in November). Now remember, that 20,000 number is not hits per day, it is simultaneous connections. Very few sites have that many connections at once. If you have a site that has an expectation of that many simultaneous connections or more, you already need to think about load balancing, app scaling, and more, regardless of what you choose for your web application type.
@@IAmTimCorey But all of the UI interaction you do in Blazor server needs to be rendered on the server, compared to doing it with JS on the client. The latency of that server rendering is a problem for a global website. It provides terrible UX. Also, requiring an active websocket connection is more resource intensive than just serving plain html and JS. The SignalR connection also poses issues when people are browsing your website in places with spotty connection.
It sounds like you are guessing here because server side rendering is faster than client side. The most popular language in the world for the web is PHP. It runs some of the largest sites out there. It is a server side rendered language that isn’t even precompiled. As for the spotty Internet connection, that will be an issue for any web app but yes, disrupting the SignalR connection would be bad. That’s why the newest update coming out in November has active retry.
@@IAmTimCorey I think there's a misunderstanding here. I'm not arguing about the initial server side rendering vs client side rendering. I'm arguing about the latency introduced for every action the user performs on the website that involves dynamic content. Compared to a server side rendered JS framework with dynamic hydration, Blazor can be dog slow and uses more resources. Even the creators of Blazor are well aware of this.
hey, Mr Tim is filtering data with Linq a good idea? or we should write filtering statement inside the SQL command? I think writing one select statement and then use Linq for filtering make things easier, does this has any noticeable performance difference?
Let SQL do what it does best and then let C# do what it does best. That means sort and filter in SQL whenever possible and use LINQ only after you have done as much as you can in SQL.
Thank you Tim for amazing videos you bring.
Regarding appsettings.json file, if it is modified and saved, does this causes the application to restart?
Danke!
Thank you as well!
Maybe you could make a video talking about the ups and downs of developing and debugging a c# backend with Docker. Since Visual Studio adds an easy way to add Docker support.
Thanks! Noted and added to the list
@@IAmTimCorey Already excited 😁. I havent seen any good practical videos talking about Docker and Asp.Net. Most videos are focused only on Docker as a whole. But as you often say, other videos clearly lack context. Which makes it harder to integrate and see the value. Also I believe, Docker is and will be the next big thing. Because it's easier to make a new instance of a programm then to get every concurrency perfect. More CPU cores every year.
PS: I have deep respect for people like you, who put quality videos for free online. I mean you take the time and talk about the important stuff even if it's less popular. When I was experimenting with Java, I had to watch trough hasty and unclear indian tutorials, which was a pain for me. Since then, I never touched Java again 😆. I rather learn C# from you! You deserve a special place in the developer community!
Greetings from Switzerland 🇨🇭
Hi Tim do you have a tutorial for Startup or ConfigureService Class?
I cover Dependency Injection in .NET Core (ConfigureService) in a course: www.iamtimcorey.com/p/dotnet-core-dependency-injection-in-depth
I also use it in various videos, but I don't specifically focus on it.
@@IAmTimCorey is there any promo code?
Your videos are great and you are an excellent teacher.. However, your courses are really expensive for me.
I am glad you are enjoying my content. As for the price, I know it can be expensive for some. That's what pays for the free content, though. Take advantage of everything that is free because some people were able to afford the paid content.
Hello, nice video, I enter here because I have an issue, I have a different connectionString to use in my local project than the one that is used in the Production Project... how can I do to configure for instances a connection string in development mode than production mode, because when I push my changes to the repo the connection String of my AppSettings.Json is been changed with my local Connection Strings but that's not what I want
What if you have to obtain specific values from the Windows Registry and need those values to determine whether a database column is set or not. Instead of pulling from the Registry to display a value in a razor page in a BlazorWASM project, is there a way to store keys and values from the Registry safely in an appsettings.json file?@IAmTimCorey
Happy birthday Tim! Thanks for sharing this. It gives a good veiw. What I really miss are user settings. I will see if this topic is covered in the course. For user settings, the user must be able to change the value of a setting from the UI. After looking for a number of solutions, I now use the appsettings.json for defaults and the good old registry for other settings. (WPF desktop applications only).
As far as I can see in the course contents, I see there is a lesson on an Options class. Does this cover user settings and how to set things up that a user can change settings?
I'm hoping you saw the video by now and it added value. I do not cover cover user settings specifically
Can we allow or deny certain Windows Authenticated users in AppSettings?
I’d love to see an answer to this, it doesn’t appear to be as simple as comparing strings in the appsettings stored values with the authenticated user string
I'm trying to figure out how to make an appsettings.Staging.json and have it run on our staging server but I don't know how to set the environment variable to Staging when we run on the staging server.
Do you have a video or course where you use Azure environment keys with appSettings? Nice video by the way.
No, sorry
I got confused about the learning order a bit Tim. You mentioned learning 4 things in order in your latest video as following;
C#, Blazor, Docker, and Azure, but here we are seeing Blazor in this video when we are trying to learn C# as a first step.
As I'm trying to learn C# and everything is so messy for me, this ordering misconception makes me confused now, could you enlighten me, please?
36:46 So how would the environment variable in launchSettings.json be set to production when deploying to production? Wont you need to edit that yourself and recompile the app?
We don't deploy launchSettings.json to production. That's why the environment setting defaults to "production". You don't need to do anything when deploying. Since the file doesn't get deployed, the setting isn't there so the default is used.
@@IAmTimCorey That makes sense now, and I also read the officials docs as well. How would you recommend setting the environment for non-prod environments? Update web.config? Set a system environment variable on the non-prod server? This part still has me scratching my head and Idk if there's a general answer to this
Thanks for this video! One question: How do you read the settings from secrets.json? I moved my connection string to this file, but my app can't seem to access this (or any setting) inside the secrets.json file. I've enabled with " dotnet user-secrets init " and it compiles fine, just have no clue as how it is read (it's not done automatically, so I figure there's some more settings in Visual Studio 2022 that need to be configured for this to work). Thanks again!
forgot to mention: this is for a console application - the config is via the following:
IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json", true, true).Build();
DBConn = config.GetConnectionString("DBConn");
I figured it out what was missing.
IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json", true, true).AddUserSecrets("your key here").Build();
now just have to figure how to NOT have my key string embedded in the code.
.AddUserSecrets()
Secrets.json is only for development. It isn't for deployed applications. When you deploy a console app, you will need to have your secret in appsettings.json or another accessible location. Yes, it isn't secure if you have access to the machine, but that's true either way.
@@IAmTimCorey - Ah, ok. Makes sense.
Excellent lesson Mr. Corey!
But can you kindly tell why we need to use appsettings.development.json when we can just use secrets.json? Is it because appsettings.development are accessible to everybody working on a project and secrets.json are only on our local machine for us exclusively? Then what’s the point of using basic appsettings.json anyway? In which situations we need to use what? Feeling a tad confused.
Correct. Appsettings.development.json gets put into source control. These ae all options. You don't have to use every option. Don't try to force it. Just figure out what works best for you. For me, I most often use appsettings.json and secrets.json. However, every once in a while I'll use one of the other options.
15:24 Where do I get that "Startup" class? It does not exist in that context in Program.cs in .net 6
Here is a video explaining it: ruclips.net/video/vdhFw1VSowg/видео.html
cool thanks. so when i want to deploy project i need to move my sercrets from secrets.json to something else right? the stuff u menstioned at 46:40
Correct, although what is in your secrets.json is typically your local secrets (ones for your local testing environment), so you would be putting your production values in Azure. But yes, the same property names.
Hey Tim amazing video, but how to create a config file from the scratch let say in a console application
Just add it as a new file. Make sure to mark the file as "Copy if Newer" in the properties of the file.
Hey Tim, could you share a tip, how to get these massive intellisense, like yours in 14:31? Mine got only 2 first rows
Not sure how I got it to show up. Sorry.
Hi Tim, Thank you so much one of important topics. I have an .Net 6 Worker Service Project in VS 2022. In my appsettings.json I defined a custom object with one key and value. "LocalSqlServer": { "SqlServerName":"AVD111234" } . I tried fetching this value in my program.cs file by _config.GetSection("LocalSqlServer:SqlServerName").Value . The value comes as null. I tried different ways to fetch it using _config object, also tried how you fetch the same in this video, but no success so far. I don't know where I am going wrong. Do you think it works differently for worker service project ? Or Am I doing any mistake in code. Please help. Thank you in advance.