Skip to main content

Posts

Jupyter error - No module named ‘selenium’

Recently I installed Anaconda to learn more about it and the first thing I was about to try was opening a web page automatically using Selenium. So, to perform this, I used Jupyter and tried to import Selenium webdriver. Till here, everything went well, but when I ran my code using Jupyter Notebook, I got an error: ‘ No module named ‘selenium ’. The strange thing is, I got an error, although I have got Selenium installed on my machine using pip with below command:  pip install selenium. Now what could be the reason? So, to analyze it further, I wrote the same Python code in Visual Studio and ran it. It worked perfectly alright. So, I just thought to give a try to check the version of Selenium and first I tried with pip as shown below: As the above message says, it is already installed and didn’t complain anything. So, next I thought to try with Anaconda command prompt as shown below:  Did you notice that...

Utilizing Azure Blob and WebJob to Convert Excel Files to Flat File Format

I believe, there are many articles or blogs already available which speaks about how to convert an excel file to a comma separated file using C# and in all the cases (which I referred), excel is read from a hard drive of a local machine and csv file is saved back to the same hard drive. But in spite of knowing this, again, I’m going to draft another post. Wondering, why? Well, this post is going to be slightly different in the way files are being read and saved back. Below are the major offerings of this post:     What if we have many excel files to convert but disk is not having enough space to save all of those? Same is the case for conversion output too. What if we don’t have permission to save our converted files on to the local machine? How can we run this conversion utility using web jobs? In order to address the above challenges, we can utilize Azure capabilities wherein we will do everything on the fly without utilizing disk space as a storage for our f...

Getting host information from current the URL in ASP.NET Core 3.1

While working on web application, it’s quite natural that we need to jump between various environments (i.e. Development, Testing, Production, etc.) during various phases of product life cycle. In other words, all these environments may have different-different host addresses. Let’s have a look at a few of those. During the development phase, we usually run our application with http://localhost:8080/features/..., where our host is localhost:8080 During the testing phase, the same application can be run on http://www.consumerapps.com/features/..., where our host is www.consumerapps.com Now, what if we want to get the host name in log file for an audit purpose. We cannot go and hard code  it in the application, as it may change based on the environment on which application is running. In ASP.NET Core 3.1, it can be easily achieved using HttpContext . First change we have to do is, to register IHttpContextAccessor as a singleton: services.AddSingleton<IHttpC...

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 so...

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...