“Error starting userland proxy: Bind for unexpected error Permission denied” error when debugging ASP.Net Core application

If you get an “Error starting userland proxy: Bind for unexpected error Permission denied” error, when debugging your ASP.Net Core application in Docker, then run the following command to find the excluded ports range, being used by different applications:
netsh int ip show excludedportrange protocol=tcp
image

I then change my launchSettings.json file to use a port that is not reserved

{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50504",
"sslPort": 44392
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Scrubber": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_URLS": "https://+:443;http://+:80",
"ASPNETCORE_HTTPS_PORT": "44393"
},
"httpPort": 54558,
"useSSL": true,
"sslPort": 44393
}
}
}

Continue Reading

Deploy a ASP.Net Core application to Digital Ocean

  • Make sure that your source code is checked into Github. Check in the DockerFile in the root of the repository.
  • Create a account in DockerHub at https://hub.docker.com/. Create a new repository and connect your github repository.  Click Create & Build. With this, when new changes are checked into your Github repository it will be automatically build in DockerHub and a new image created.
    image

Create a new account\Login in Digital Ocean. Create a new Droplet.
image

Select Docker and select the 5$\month plan.  Select One time password for Authentication.
Click create Droplet.

image

After the droplet is created, click the droplet.
image

Then click the console link on the right hand side.
image

In the console window, login into the your droplet using the login id and one time password, provided in email. You will be asked to change the password.
To install the application, in the console window, login into docker hub using the following command:
login docker
pull the image for your application using the following command:
docker pull ajitgoel/socialmediascrubber
To run the docker image, use the following command:
docker run –p 80:80 ajitgoel/socialmediascrubber
your website should now be visible at http://<PublicIpAddress>

Continue Reading

Fix for “Unable to bind to the underlying transport for [::]:<PortNumber>. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine.

I have been developing on Visual studio and IISExpress for sometime when I started getting the following error:
Unable to bind to the underlying transport for [::]:50160. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine.

Deleting the .vs folder in the application or the C:\Users\<UserName>\Documents\IISExpress\config folder, restarting the IISExpress or machine,  did not help nor did adding the “::”  value to the registry key Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\ListenOnlyList
image

What finally worked for me when I ran the following command, I see that the ports from 49697 to 50503 were reserved by Docker.  So I changed the application port to 50504 and the application was able to run correctly on IISExpress.

netsh interface ipv4 show excludedportrange protocol=tcp

image

Continue Reading

Azure App service for containers error: repository does not exist or may require ‘docker login’

I have configured my ASP.Net Core 2.2 application for continuous build and deploy through Visual Studio 2019. I also see that the image has been build and the deploy successful in Azure DevOps. However in my App service’s application logs, I see the following errors:

2019-07-03 05:44:22.174 ERROR - Pulling docker image productssimplerregistry/simpler.products:5 failed:
2019-07-03 05:44:22.179 INFO  - Pulling image from Docker hub: productssimplerregistry/simpler.products:5
2019-07-03 05:44:23.663 ERROR - DockerApiException: Docker API responded with status code=NotFound, response={"message":"pull access denied for productssimplerregistry/simpler.products, repository does not exist or may require 'docker login'"}
2019-07-03 05:44:26.233 ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)

To fix the issue, you should ensure that your application’s pipeline’s Azure Container Registry is the fully qualified name like  productssimplerregistry.containers.azurecr.io instead of just productssimplerregistry.

2019-07-03 19_23_27-Window

Continue Reading

Configuring Serilog SQL server sink logging for ASP.Net Core application

Here are the changes that you need to make in your ASP.Net Core web application to configure Serilog logging with SQL server sink.

a. Install the following libraries from Nuget, using the Nuget Package Manager
Serilog.AspNetCore
Serilog.Extensions.Logging
Serilog.Settings.AppSettings
Serilog.Settings.Configuration
Serilog.Sinks.MSSqlServer

b. Program.cs:


using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Serilog;
using System;
using System.IO;

namespace Scrubber
{
  public class Program
  {
    public static void Main(string[] args)
    {
      var path = Directory.GetCurrentDirectory();
      var environmentName =Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production";

      var configuration = new ConfigurationBuilder()
      .SetBasePath(path)
      .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
      .AddJsonFile($"appsettings.{environmentName}.json", optional: false, reloadOnChange: true)
      .Build();

      Log.Logger = new LoggerConfiguration()
        .Enrich.FromLogContext()
        .ReadFrom.Configuration(configuration)
        .CreateLogger();

      try
      {
        WebHost.CreateDefaultBuilder(args)
          .UseStartup()
          .UseSerilog()
          .Build()
          .Run();
      }
      finally
      {
        Log.CloseAndFlush();
      }
    }
  }
}

AppSettings.json:


{
  "Serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer" ],
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "YourSQLServerConnectionString",
          "tableName": "Logs",
          "autoCreateSqlTable": true
        }
      }
    ]
  }
}
Continue Reading

System.BadImageFormatException: Index not found. (Exception from HRESULT: 0x80131124)

If you get a

An unhandled exception has occurred while executing the request. 
System.BadImageFormatException: Index not found. (Exception from HRESULT: 0x80131124)

error when publishing your website through Visual Studio, a couple of things to check are:

  • When publishing the application to Azure make sure that the “Remove Additional Files at destination” option is checked.

    image

  • Made sure that all the projects(only one) were being build as “Any CPU” in both “debug” and “release” configuration.
    image
Continue Reading

Configuring Azure app services logging for ASP.Net Core application

If you are using Azure to host your ASP.Net Core website and don’t want to spend time configuring logging in your web application, then you can use Azure App services logging. Here are the changes that you need to make in your web application to configure logging.

Startup.cs:


using Microsoft.Extensions.Logging.AzureAppServices;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
         services.Configure<AzureFileLoggerOptions>
(Configuration.GetSection("AzureAppServicesLogging"));
} }

AppSettings.json:


{
"AzureAppServicesLogging": {
"BlobName": "Log.txt"
}
}

I have also turned Detailed error messages on, so I can more glean more details if an error occurs.

image

image

Continue Reading

“Client with IP address is not allowed to access the server” when running update-database command through Visual Studio.

If you are deploying your entity framework database changes to your production database through Visual Studio(like we do) for the first time,  you might receive the following error:

Cannot open server '<ServerName>' requested by the login. 
Client with IP address '<MyIPAddress>' is not allowed to access the server.  
To enable access, use the Windows Azure Management Portal or 
run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range.  
It may take up to five minutes for this change to take effect.

To fix this issue, you need to go to your database in the azure portal, click “Set server Firewall” and then add your IP address under “Add Client IP”

2019-04-30 23_10_11-SimplerProductsScrubber_db - Microsoft Azure

image

Continue Reading

List all AWS resources

I was being charged for AWS resources that I had forgotten to delete. Deleting these resources by going to each region is a big hassle.
The best way that I found to list all AWS resources(short of using a github tool) across all regions is to use the Tag Editor. When searching, select all the regions and all the resource types.  You can then use a link to go to each resource and then delete it, if appropriate.

image

Continue Reading
1 2 3 6