Running a Webhost in a Docker Container with an Exposed Port (.Net Core 2.0)

I needed to setup a webhost in a docker container with an exposed port. I wanted to be able to call the exposed port from the local machinem, but I was having an issue connecting to this port. I tried several things but none worked, including:

  • changed configuration and ports, tried different ports
  • expose ports through docker run
  • adding a new windows route, through cmd, to connect to the container IP (route /P add 172.17.0.2 MASK 255.0.0.0 10.0.75.2) <- this actually made the container ip address (172.17.0.2) pingable
  • disabling iptables on docker daemon
  • installing docker-machine but it conflicts with Hyper-V

 

But after some time and research on half the internet sites, I finally found the issue and the solution. Continue reading

Hi again, I’m Clive

11 years after my last “about me” post, it was time to post an update, as a lot has changed. As per introduction, I’m Clive Ciappara, I’m a Full Stack Developer who is passionate about everything Microsoft.

 

After five years working in the iGaming Industry with Betclic, it was time for a change and was offered a job with Codit – a Belgian company using the latest Microsoft technologies whose aim is to help businesses with their integration needs. Currently working on Nebulus – an IOT management system – which is giving me a lot of exposure to different services available on Azure, .Net Core, and WebApi. Continue reading

How to exclude Json properties from WebApi response using a custom ContractResolver

I am currently working on a Backend API that acts as a middleman to a Front API and a DocumentDB database (the structure is shown in the above image).

 

I had the following class which is used to send data to both the Front API and to the DocumentDB. Some of the fields needed to be hidden when returning a response back to the Front API, since they weren’t useful for the user and for security concerns. First I tried using [JsonIgnore] and [IgnoreDataMember] (as seen below), which successfully excluded the required fields from the response, but using them was also excluding the same fields when sending the data to DocumentDB, so it was a no-go. Continue reading

The correct way to implement StructureMap in .NET Core WebApi when having multiple projects

StructureMap is an IoC/DI container for .Net which has been a long time around. I’ve been using it for these past few years, and after all this time, I found out the correct way to implement it.

This is how I used it before and I’m sure the majority of you are currently using the same methods. In the Registry, I would register each interface and it’s inherited class by calling a “config.for” for each service as follows:

    config.For(typeof(ITestService)).Add(typeof(TestService));
    config.For(typeof(IUserService)).Add(typeof(UserService));
    config.For(typeof(ITenantService)).Add(typeof(TenantService));
    config.For(typeof(IProjectService)).Add(typeof(ProjectService));

And whenever new interfaces and services are added, they need to be registered using a new “config.for” line.

That was the old way, of how I did things. This is the new way. Continue reading

Logic Apps and Azure Functions Presentation

Presentation for Betclic Training Bites (France) – June 2017

Presentation for Betclic Training Bites (Malta) – December 2016

Presentation for Tech-Spark – October 2016

Logic Apps is a fully managed iPaaS (Integration Platform as a Service). Developers do not have to worry about building hosting, scalability, availability and management.

It Provides a simple way to implement scalable integrations and workflows in the cloud. Continue reading

Azure Functions Presentation

Presentation for Global Azure Bootcamp – April 2017

Azure Functions are part of the Azure Web + Mobile suite of App Services and are designed to enable the creation of small pieces of meaningful, reusable methods, easily shared across services. These serverless, event-driven methods are often referred to as “nanoservices” due to their small size. Although an Azure Function can contain quite a bit of code, they are typically designed to serve a single purpose, and respond to events in connected services. Continue reading

Visual Studio Tips and Tricks Presentation

Presentation for Betclic Training Bites – January 2017

Quick Launch

  • Quick Launch (CTRL+Q) – most of the time this is ignored. VS have many options and windows to choose from. For example, your closed debug window. To find it, just go to CTRL+Q
  • Or where to build something,
  • You can use @ option to limit to most recently used (@mru), or to show options only ex. @option line numbers

Continue reading

Fix Upload_Max_Filesize for WordPress on Windows Hosting

upload-icon-20606

 

I needed to upload a file on a WordPress website, and the following issue was showing up:

The uploaded file exceeds the upload_max_filesize directive in php.ini

 

All the solutions I found show how to update the php.ini file, but this only works on Linux Hosting. For Windows Server and Windows Hosting accounts, you need to follow the next steps to solve the issue: Continue reading

Fixing AngularJS + MVC Routing Issues

hashratestore_icon-1Currently, I’m working on a hybrid AngularJS and MVC project, one of the tasks being to get rid of the # symbol from the URL. In pure AngularJS apps, this is very easily done by following the next two steps (and easily googled):

  1. Set up your base href in your index page: <head> <base href=”/”> </head>
  2. Add the following in your angular app config: $locationProvider.html5Mode(true)

 

The problem arises when you are in the .NET stack and using AngularJS with MVC. The above solution will still remove the # from URL, but page refresh won’t work. Why? This happens because MVC knows nothing about AngularJS routing and by following default MVC routing, it will look for an MVC page which doesn’t exist. Continue reading

Create a Valid Number #Angular directive that handles decimal points

angular-webapi-valid-number

The below ‘validNumber’ directive verifies that the input field has a valid number by checking the last key pressed. If it is a valid number it continues the operation, but if not the directive prevents the input action and the character is not inserted in the input box.

 

This directive also handles decimal points. To enable this option, you have to add ‘enable-decimals’ as an attribute in the <input type=”text”> html code and assign ‘true’ or ‘false’ as required. Continue reading