Skip to main content

Posts

Showing posts from 2019

Globally configuring values for JSON Serializer in ASP.NET Core 3.1

This article will focus on how one can set certain constraints on the given data type for JSON serialization and that too at the application level, which means changes need to be done at a global level rather than doing for specific custom class or property. We will also see, how one can fallback to default settings, post this application level change. Let’s understand this with the help of an example. Making application level changes for JSON serialization Here problem statement is, we want all the float values to be restricted to 3 decimal places. Now, one way to achieve this is to decorate all the float properties in all the model classes with specific attribute using  [JsonConverter(typeof(…)] . With above attribution, one can indeed achieve the goal of conversion or data formatting, but what if there are so many float values across the application. Is it feasible to go and change each and every single float property under every model class? I feel, NO :( So, the soluti

ASP.NET Technical Guru Award - July 2019

Grabbed the award from Microsoft Technet. This time it's Silver medal :)

Avoid duplication of ModelState.IsValid in ASP.NET Core

Generally, whenever something is to be saved to the database or to any other place, as a best practice almost everyone use to validate the state of the model. So, if state of model is valid, we proceed and if model state is invalid, we handle it as a bad request. This looks something like this: If(!ModelState.IsValid) { // create bad request object } So, all these were done by using the IsValid property. Problem Now what if we have to perform the same validation for all the models. Are we going to write the same validation in each and every controller? Of course, No. Solution Rather than duplicating the same code in each and every controller, we can create a global filter. This global filter has few methods, but for our purpose we can go with OnActionExecuting . public class ValidateModelStateFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext context) { if (!context.ModelState.Is

Received MVP Award for the 3rd time

Another amazing news received this week. MVP award is in my hand for the 3rd time.

ASP.NET Technical Guru - May 2019

Once again grabbed the award from Microsoft Technet. This time it's Silver medal :)

Build errors dialog in Visual Studio

Background When you are in between of writing your logic and by mistake you pressed F5, what will happen? Boom… you will lend up with below dialog due to compilation errors: Now think about it. If we are writing a code it means we need that to be executed whenever we are running the application. Isn’t it? It’s very-very rare case when someone still would like to execute previous logic. At least for me, I never ever want this to happen. Solution So, how to get rid of this rarely used prompt. There are two ways: First, Simply check the checkbox ‘ Do not show this dialog again’ . But for me, on one of my machines this checkbox has not even appeared. Hence, I opted for second option. Second, go to Tools >> Options… >> Projects and Solutions >> Build and Run. On right side panel, just change the value in dropdown displayed under ‘ On Run, when build or deployment errors occur: ’ to  ‘ Do not Launch ’  and we are done.

Creating ASP.NET Core 2.2 Application Step-by-Step

This article will walk you through the creation of ASP.NET Core application using ASP.NET Core 2.2 from scratch, by utilizing the capabilities of package manager, EF Core, Identity API, Razor Class Library, etc. So, rather than being more theoretical, this article will focus mainly on the implementation part. Wherever required, I’ll throw some light on the conceptual part too. To know more, you can either go here or here .

Why OpenID Connect came?

After publishing my previous article on ' Understanding concepts - OpenId, OAuth and SAML'  , I received a general question from a few of my colleagues and that is ‘Why OpenID arrived? What is the need of it’? By now, most of us are already aware that OAuth 2.0 is an authorization protocol and it really did a great job by providing information, which facilitated its user to take some prodigious authorization decisions. But what about exchanging this information? How to do that? Is that exchange done in a secure manner? Bla bla bla… All such sorts of questions are dealt in different- different manner as every authentication provider have their own mean of exchanging this OAuth information. As not all the providers have provided an equivalent level of security, led to some buzzes. Here OpenID Connect came for rescue. It fixes all the common problems by providing an authentication protocol with a standardized way of exchanging messages between a provider and subs

What's new in Visual Studio 2019

Microsoft has released Visual Studio 2019, two days back. This release has many awesome features targeting productivity and collaboration improvement. I’ve collected certain features as part of the launch event by Kendra Havens and Scott. Here are those: Side-by-side installation of Visual Studio versions New look of Start Page New look of Create Project window Redesigned user experience and theme Search is more intuitive Live share option for collaboration with fellow developers Debugger improvements – Search is available for Watch, Locals and Autos window Extracting only few projects from a solution – Solution filter Monitor awareness – VS resized as per the monitor size Fonts are colors based on classification of words Opening csproj file directly on double click of SDK projects New column Kind has added to Find All References option with Read/Write Code cleanup with just one click with rules configuration capability Facility to export code style as. editorconfig

Understanding concepts - OpenId, OAuth and SAML

I was going through some of the forums related to security concepts and found one topic which is very much communal, and many people posted questions about their confusion on the terms related to Authorization, Authentication and Security protocols.  So, I thought to write something about these terms in layman, which is more towards the concept and less towards technical aspects.  Before we start, let's have a look at the question, which really lighten the spark in me - stackoverflow.com - What's the difference between OpenID and OAuth ? Hope you are with me to get started. Well, one of the major aims of any application is to make it secure and easy to use without imposing much work on the end user. Now, in order to fulfill  this aim, we have to look into a few of the major security aspects in terms of protocols, usage and scenarios. And that's why this article is. What is Authentication and Authorization? In simple terms, authentication is the process to

Traditional file helper won't work in .Net core

Prior to .Net Core, we use to handle file by passing various sort of parameters, like -in memory bytes, FileStream or file path and that use to work perfectly.  But when it comes to .Net Core, passing a file path will not work exactly as ASP.Net MVC. In earlier versions, the path we supplied was considered as a physical path whereas in Core, same API is used to denote the virtual path. In other words, whatever path is provided will be appended with site URL.  Now how to give physical path in .Net Core?  No worries! Here comes the PhysicalFile helper for our rescue. To know more about it, here you go. Keep learning!

Confused with term Active Directory

Is On-premise Active Directory (Windows Active Directory) same as Azure Active Directory? In continuation to my previous blog post, this was one of another question asked to me.       Well, although these both are active directories but there are few differences though. Let’s have a look at those: Location - The most basic difference is, Windows AD is on-premise whereas Azure AD is cloud based. Initial moto – As Azure AD is a cloud based, some web service support is associated, unlike unadorned AD Protocols Used – Both the active directories use different protocols. As Azure AD uses SAML and oAuth whereas unadorned AD relies on NTLM and Kerberos for authentication and LDAP to query/modify Platform support – When it comes to provide support on other platforms apart from Windows, it is nightmare with Windows AD and requires more time and effort. But the same thing can be executed very smoothly with Azure AD as it just needs a registration with any one of your Microsoft

Windows Authentication & Forms-based Authentication

During my recent interaction with one of the development teams, I came across few queries. Hence, I decided to cover those general questions as part of my few upcoming blogs. The very first question I received is, when should one go for Windows authentication and when one should go for Form-based authentication? Now here one of the common response one can receive is – use Forms authentication whenever the user can supply username/password and go for Windows authentication whenever the user can use Windows Login System. No doubt, this response is correct. But there are few more points which can elaborate it. Let’ have a look at those: If user accounts are created in AD – go for Windows authentication using ActiveDirectoryMembershipProvider If user accounts are created in database, i.e. SQL Server – go for Forms-based authentication using respective membership providers, i.e. SqlMembershipProvider If user accounts are created in database whose direct member ship provi