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 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 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.
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.
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.
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 :)
Happy birthday to the best C# teacher on RU-vid. 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, 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).
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,
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....
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
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.
You should check out the Dev Questions series, where I answer questions developers and prospective developers have: ru-vid.com/group/PLLWMQd6PeGY2G8Q0d_yOPc_CocyqrFRoZ I'm on screen for those videos every Thursday.
Hey Tim! Instead of passing the whole Configuration around Pages to get just the settings' section by way of using the IConfiguration, do you not think it's prudent to rather use the Options Pattern by way of using say the IOptionsMonitor here?
I touched on that briefly in this video. It depends. You aren't hurting anything by passing the IConfiguration object around (it isn't recreating the object or using more memory). Using the Options pattern does make your life easier in certain situations though.
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.
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!
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.
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.
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
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?
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.
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 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?
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
I think this is just the normal tooltip. I think the error is that the value you are trying to read is nullable and you are trying to put it in a non-nullable string type (or whatever type you are trying to put it into).
I'm trying to get deeper knowledge for settings in c# and was so excited when I saw AppSettings in title, but then got a bit disappointed when I saw its for .Net CORE (I'm still primarily using framework...). Nevertheless, still found this video quite useful. Is there maybe .NET framework version of this video or some other resource on the topic? If not, is it planned? :)
No there isn't one (and it isn't planned). In the .NET Framework, you put all of your settings in app.config/web.config and then you do transforms using SlowCheetah or something similar to create environment-specific override files to merge in. Then you do most of your transforms in your CI/CD process.
Great video. I know you covered it, but I think it would have been more useful to me to see more examples that don't involve Razor pages. I don't want to use Razor pages, so those parts of the video left me a good amount of useless knowledge
Razor Pages are just ASP.NET Core. Most of the settings and code are the same for all of the ASP.NET Core web types (MVC, API, and Blazor Server at least). The UI isn't the star here. The code would be the same with any of these types.
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.
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
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.
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
On the server. Everything for Blazor Server is stored on the server. The only thing that goes to the client is processed HTML and CSS (no C# or Razor syntax) and the JavaScript file that connects the client to the server via SignalR. Except for that JavaScript file, Blazor Server is like any other server-side language (MVC, Razor Pages, API, etc.)