Wednesday 10 April 2024

How to find the reason of HTTP Error 500.30 - ASP.NET Core app failed to start in Azure App Service

HTTP Error 500.30 - The ASP.NET Core app failed to start

If your web app is throwing an error HTTP error 500.30 then how to find the root cause in Azure

There are multiple ways to find the error. Let's discuss the first approach.

Approach 1

Step 1: Go to Azure Portal 
Step 2: Click on App Service
Step 3: Click on Diagnose and Solve Problems.














Step 4:  Click on Web App Down
















Step 5:  Here you can click on the View Details link under .Net Core startup failure and you can find the reason for the app down.


















Approach 2

Step 1: Go to App Service
Step 2: Click on Environment Variables
Step 3: Click on App Settings

Step 4: Add new Key "ASPNETCORE_DETAILEDERRORS", Set value =1


















Restart the app it will show the error on the page instead of 500.30 - ASP.NET Core app failed to start

That's all about this article, I hope you like it.

Monday 19 February 2024

Hosting a Static Website Using Amazon S3


In today's world, most websites are static, which means they run no server-side code and only consist of HTML, CSS, and JavaScript. There is no server-side code to run, so there is no reason to host them on a traditional server.


Hosting static websites on an S3 bucket costs one to two dollars monthly and scales to millions of users.


Let's learn how to create a S3 Bucket and host the website.


Step 1: Create a Bucket

You can open S3 from the Amazon console by searching for S3 or clicking the link below. Console at https://console.aws.amazon.com/s3/


1. Click on Create Bucket











2. Enter your Bucket name and select AWS Region.













3. Uncheck block all public access
















4. Keep the remaining settings as it is like bucket versioning etc.

5. Click on the Create Bucket button.

6. You will receive the below message.









Step 2: Upload files

1. Click your Bucket Name


















2. Click on the upload button on the right.











3. Click on the add files button and upload your files. 













4. I am uploading index.html for now. You can upload your files (CSS/Images/Javascript and HTML)






















Upload your file and then click on the Close Button.

Step 3: Allow Public Access

1. Go to permissions and Edit











2. Uncheck Block all public access and click Save changes.


Step 4: Enable Static website hosting


1. Click on your bucket go to Properties and scroll down.




















2. Go to Static Website Hosting and Click Edit







3. Enable Static Website and Specify the index document. I am adding an index.html as a startup page.





















4. Click Save Changes.


Step 5: Get URL

1. Click on your bucket Name and Go To Properties.

2. Under static website, you can get the static website URL.













3. If you run this URL you will get an error, access be denied, 403













Step 6: Set Bucket Policy

1. Clock on Bucket Name and Go to the Permissions Tab.

2. Go to Bucket Policy and Edit













3. Copy the below lines and Save. Note: You need to enter your Bucket ARN in Resource. You can find Bucket ARN in the Properties Tab.


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "aarn:aws:s3:::tssbucket2024/*"
        }
    ]
}






























4. Update ARN and press the Save Changes Button.

5. Open the link in the browser and you can see the Website is running.


http://tssbucket2024.s3-website.eu-north-1.amazonaws.com/














This is all about this article. I hope you like it.


Wednesday 27 December 2023

AWS - Create Copy of DynamoDB Table and learn Backup and Restore Functionality

AWS DynamoDB Back and Restore


There is no direct way to copy DynamoDB tables as of now. So, we must take a backup and restore the table with a new name. Let's learn.


Step 1: Search DynamoDB from the search bar and Click Tabes on the left side. Select the table from the right that you want to take the backup.



















Step 2: Click on the Backup Tab, click the Create Back dropdown below, and select Create an on-demand backup.
















Step 3: Create on-demand backup, click the Create Backup button.





















Step 4: You can see the request is in progress













Step 5: You can also see the status in AWS Backup. (Search AWS backup in the Search bar).


















It will take approx 5 minutes to take the backup and it will change the status to complete.
Step 6: After completion, you can Go to Dynamo DB from the search bar and you can find the backup there then you can press the restore button.

















Step 7: Here you can update the table name that you want and press the restore button.































You can see the request submitted successfully.









Step 8: To check the status, you again can go to AWS backup --> Jobs --> and click Restore Jobs.
















Step 9: After completion, you can see a new table Under DynamoDb tables













This way you can create a table copy in the DynamoDB.
That's all about this article, thank you.


Sunday 10 December 2023

Create resource on Azure with Terraform

What is Terraform?

Terraform is an Infrastructure as Code (IaC) software tool offered by HashiCorp. You can provision and manage your infrastructure both on-premises and in the cloud with it. 


How to execute Terraform Scripts?


Prerequisite

1. You need an Azure Portal account
2. Install Azure CLI on your local system. Download the installer from the below link
    Azure CLI Installer
3. Azure Login on command prompt run (az login) command 
4. Install Terraform. Download the installer from the below link. Download 
AMD64 for     64-bit system. Terraform Download

 

Let's create a small script to create a resource Group in the Azure portal.


Step 1: Create a Terraform file to create a resource group. Paste the below script into the new file and the name should be anyname.tf

provider "azurerm" {
  version = "~>2.0"
  features {}
}

resource "azurerm_resource_group" "terraform1" {
  name = "terraform1"
  location = "eastus"
}

Place the file in any drive. I have placed the file in the D drive. Below is my file. My Resource group name is terraform1. You can write any name.











Step 2: Intialize Terraform.


My file is on D drive. So I have executed the command from D drive.
            terraform init










Step 3: Terraform Plan

            Execute command    terraform plan













Step 4: Terraform Apply

            Execute command    terraform apply












It will prompt you to perform this action? Write Yes and Enter.








After yes, it will start creating the infrastructure on the Azure Portal










You can see the success message above. Go to the Azure portal, and you can see a new resource group with the name terraform1.
















That's all about this article. 


Thursday 20 July 2023

Deploy your website to an Azure VM or Local Machine IIS.

The first step is to ensure IIS is installed on the VM. Open the browser and type localhost to ensure IIS is running. Or type inetmgr in Run. If it is not working this means IIS is not installed. 

Install IIS

1. Open the control panel
2. Go To Programs And Features
3. Click on Turn Windows Features on or off
4. Click on Internet Information Services (IIS)
5. Press Ok


















It will install IIS on your system. Now when you open localhost you can see the below screen.

















6. Go to run and type inetmgr. you can view IIS as having a default website.













7. You can publish your code to Default Web Site or create a new Website.

8. Let's publish your code on the default website. Right-click on the default website and click Explore. Publish your code and paste it here.

9. Open the browser and type localhost. You can see your website is running. If you are getting below error

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration data for the page is invalid.


This means you need to install the .Net Runtime on your VM. My API is in .Net 7. So, you can download .net 7 from the link below or from Google based on the specific version.

.Net runtime

10. Hurrah, now you can see your website is running.

This is all about this article. Thank you.

Saturday 1 April 2023

Generate C# .NET Classes of entire database through SQL Scripts Automatically

Let's learn how to generate C# Classes from SQL Scripts. Generate C# classes automatically for the entire database.


Step 1: Copy the query below and run it in the SQL Editor (New Query).
Step 2: Pass the table name as a parameter and run the query.

You can find the entire class in the output below.

DECLARE @TableName sysname = '' 
DECLARE @objectId int=1

      WHILE EXISTS (select 1 from sys.objects where type='U' and 
					name!='__RefactorLog' and object_id > @objectId)
      BEGIN          
        SELECT @objectId = MIN(object_id) FROM sys.objects 
					WHERE TYPE='U' and NAME!='__RefactorLog' 
					AND object_id > @objectId    
		
		SET @TableName=(SELECT NAME FROM sys.objects WHERE object_id=@objectId)

DECLARE @Output VARCHAR(MAX) = 'public class ' + @TableName + ' {' SELECT @Output = @Output + ' public ' + ColumnType + NullSign + ' ' + ColumnName + ' { get; set; }' FROM ( SELECT replace(col.name, ' ', '_') ColumnName, column_id ColumnId, CASE typ.NAME WHEN 'bigint' THEN 'long' WHEN 'binary' THEN 'byte[]' WHEN 'bit' THEN 'bool' WHEN 'char' THEN 'string' WHEN 'date' THEN 'DateTime' WHEN 'datetime' THEN 'DateTime' WHEN 'datetime2' THEN 'DateTime' WHEN 'datetimeoffset' THEN 'DateTimeOffset' WHEN 'decimal' THEN 'decimal' WHEN 'float' THEN 'double' WHEN 'image' THEN 'byte[]' WHEN 'int' THEN 'int' WHEN 'money' THEN 'decimal' WHEN 'nchar' THEN 'string' WHEN 'ntext' THEN 'string' WHEN 'numeric' THEN 'decimal' WHEN 'nvarchar' THEN 'string' WHEN 'real' THEN 'float' WHEN 'smalldatetime' THEN 'DateTime' WHEN 'smallint' THEN 'short' WHEN 'smallmoney' THEN 'decimal' WHEN 'text' THEN 'string' WHEN 'time' THEN 'TimeSpan' WHEN 'timestamp' THEN 'long' WHEN 'tinyint' THEN 'byte' WHEN 'uniqueidentifier' THEN 'Guid' WHEN 'varbinary' THEN 'byte[]' WHEN 'varchar' THEN 'string' ELSE 'UNKNOWN_' + typ.name END ColumnType, CASE WHEN col.is_nullable = 1 and typ.name IN ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset','decimal','float','int','money','numeric','real', 'smalldatetime','smallint','smallmoney','time','tinyint','uniqueidentifier') THEN '?' ELSE '' END NullSign FROM sys.columns col INNER JOIN sys.types typ on col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id WHERE object_id = object_id(@TableName) ) temp order by ColumnId set @Output = @Output + ' }' print @Output
END
Here is the output





If you want to generate the classes of a specific table then follow the below article.


I hope you like this article.

Get Images/Files from Azure Storage Blob/Container .NET C#

There are many ways to get files from Azure Storage in .Net and C#. We will discuss 3 different ways today. Before that let's create a storage container on Azure Portal.


1. Create a Storage account in Azure Portal
2. Click on the container, create a new container, and select the public access level.











3. Click on the "Access keys" option and copy the connection string. We will use it in our code.














Let's learn different ways to get the files to Azure Storage. For that, you need to install Azure.Storage.Blobs package from Nuget and you can run the below code based on your requirements.


1. Get bytes/base64 string to Azure Storage

    
[HttpGet(Name = "GetImageBytes")]
public async Task<List<BlobImageModel>> GetImageBytes() { var connectionString = "pass your connection string here"; var container = new BlobContainerClient(connectionString, "containernamehere"); var files = new List<BlobImageModel>(); await foreach (var file in container.GetBlobsAsync()) { string uri = container.Uri.ToString(); var name = file.Name; var fullUri = $"{uri}/{name}"; var blobClient = container.GetBlobClient(file.Name); if (blobClient.ExistsAsync().Result) { using (var ms = new MemoryStream()) { blobClient.DownloadTo(ms); var bytes = ms.ToArray(); files.Add(new BlobImageModel { Name = name, ImageBytes = bytes }); } } } return files; }

public class BlobImageModel { public string? Name { get; set; } public byte[]? ImageBytes { get; set; } }

2. Get Images with URLs from Azure Storage

      
[HttpGet(Name = "GetImagesURL")] public async Task<List<BlobResponseModel>> GetImagesURL() { var connectionString = "connection string here"; var container = new BlobContainerClient(connectionString, "containernamehere"); var files = new List<BlobResponseModel>(); await foreach (var file in container.GetBlobsAsync()) { string uri = container.Uri.ToString(); var name = file.Name; var fullUri = $"{uri}/{name}"; var blobClient = container.GetBlobClient(file.Name); if (blobClient.ExistsAsync().Result) { files.Add(new BlobResponseModel { Uri = fullUri, Name = name, ContentType = file.Properties.ContentType }); } } return files; }

     public class BlobResponseModel
    {
        public string? Uri { get; set; }
        public string? Name { get; set; }
        public string? ContentType { get; set; }
     }

If you want to upload the image to azure storage, follow the article below.

Upload File to Azure Storage


This is all about the Get image from Azure Storage. 

 

How to find the reason of HTTP Error 500.30 - ASP.NET Core app failed to start in Azure App Service

HTTP Error 500.30 - The ASP.NET Core app failed to start If your web app is throwing an error HTTP error 500.30 then how to find the root ca...