<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>S3 Tech Blog</title><description>S3 Tech Blog ! The Biggest blog site for Every Topics .
About : Softwares , Programming , Education , Technology.
Sql server , php, Dot net , Apache , C , C++ , C# , ASP.NET , PhotoShop , Corel-Draw , Hacking and much more ...</description><managingEditor>noreply@blogger.com (S3 Technology Softwares)</managingEditor><pubDate>Thu, 26 Feb 2026 17:04:08 +0530</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">516</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">5</openSearch:itemsPerPage><link>http://s3tech.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:summary>S3 Tech Blog ! The Biggest blog site for Every Topics . About : Softwares , Programming , Education , Technology. Sql server , php, Dot net , Apache , C , C++ , C# , ASP.NET , PhotoShop , Corel-Draw , Hacking and much more ...</itunes:summary><itunes:subtitle>S3 Tech Blog ! The Biggest blog site for Every Topics . About : Softwares , Programming , Education , Technology. Sql server , php, Dot net , Apache , C , C++ , C# , ASP.NET , PhotoShop , Corel-Draw , Hacking and much more ...</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>Azure Functions: Sending Email via SendGrid</title><link>http://s3tech.blogspot.com/2023/11/azure-functions-sending-email-via.html</link><category>.Net</category><category>ASP.NET</category><category>C#</category><category>Programming</category><author>noreply@blogger.com (S3 Technology Softwares)</author><pubDate>Wed, 8 Nov 2023 20:55:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2684797976388449764.post-3288729379354569772</guid><description>&lt;p&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;In this blog post, I will show you how to create an Azure Functions app that can send emails via SendGrid. SendGrid is a cloud-based email service that provides reliable and scalable email delivery. Azure Functions is a serverless compute service that lets you run code without managing servers or infrastructure. By combining these two services, you can easily send emails from your Azure Functions app without worrying about the underlying email infrastructure.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="background-color: white;"&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;To get started, you will need the following:&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;- An Azure account with an active subscription. If you don't have one, you can create one for free here.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;- A SendGrid account with an API key. If you don't have one, you can sign up for free here and follow the instructions to create an API key.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;- Visual Studio Code with the Azure Functions extension installed. You can download Visual Studio Code here and install the extension from here.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;- The Azure Functions Core Tools. You can install them from here.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;Once you have everything set up, follow these steps to create and deploy your Azure Functions app:&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;1. Open Visual Studio Code and create a new folder for your project. Name it whatever you like, such as `EmailSender`.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;2. In Visual Studio Code, press `Ctrl+Shift+P` to open the command palette and select `Azure Functions: Create New Project...`. Choose the folder you created in the previous step as the location for your project.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;3. Select `C#` as the language for your project and `.NET Core 3.1` as the runtime version.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;4. Select `HTTP trigger` as the template for your first function and name it `SendEmail`. Choose `Anonymous` as the authorization level for your function.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;5. A new file named `SendEmail.cs` will be created in your project folder with some boilerplate code for your function. Replace the code in this file with the following:&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;6. In Visual Studio Code, open the `local.settings.json` file in your project folder and add a new setting named `SENDGRID_API_KEY` with the value of your SendGrid API key. This file is used to store app settings for local development and testing. Make sure not to commit this file to source control as it contains sensitive information.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;7. In Visual Studio Code, press `F5` to run your function app locally. You should see a message in the terminal window that says `Http Functions: SendEmail: [POST] http://localhost:7071/api/SendEmail`.&lt;/span&gt;&lt;br style="box-shadow: none; font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;" /&gt;&lt;span style="font-family: &amp;quot;Segoe UI&amp;quot;, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif; font-size: 14px;"&gt;8. To test your function, you can use a tool like Postman or curl to send a POST request to the function URL with a JSON body that contains the email parameters. For example, you can use the following curl command:&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-family: Segoe UI, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;"&gt;&lt;div&gt;&lt;span style="color: #6a9955;"&gt;//csharp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;System&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;System&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;IO&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;System&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Net&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;System&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Net&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Mail&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;System&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Threading&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Tasks&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;Microsoft&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;AspNetCore&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Mvc&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;Microsoft&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Azure&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;WebJobs&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;Microsoft&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Azure&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;WebJobs&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Extensions&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Http&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;Microsoft&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;AspNetCore&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Http&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;Microsoft&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Extensions&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Logging&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;Newtonsoft&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Json&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;SendGrid&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #c586c0;"&gt;using&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;SendGrid&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Helpers&lt;/span&gt;.&lt;span style="color: #4ec9b0;"&gt;Mail&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: #569cd6;"&gt;namespace&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;EmailSender&lt;/span&gt;&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;public&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;static&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;class&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;SendEmail&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;span style="color: #4ec9b0;"&gt;FunctionName&lt;/span&gt;(&lt;span style="color: #ce9178;"&gt;"SendEmail"&lt;/span&gt;)]&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;public&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;static&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;async&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;Task&lt;/span&gt;&amp;lt;&lt;span style="color: #4ec9b0;"&gt;IActionResult&lt;/span&gt;&amp;gt; &lt;span style="color: #dcdcaa;"&gt;Run&lt;/span&gt;(&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;span style="color: #4ec9b0;"&gt;HttpTrigger&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;AuthorizationLevel&lt;/span&gt;.&lt;span style="color: #9cdcfe;"&gt;Anonymous&lt;/span&gt;, &lt;span style="color: #ce9178;"&gt;"post"&lt;/span&gt;, &lt;span style="color: #9cdcfe;"&gt;Route&lt;/span&gt; = &lt;span style="color: #569cd6;"&gt;null&lt;/span&gt;)] &lt;span style="color: #4ec9b0;"&gt;HttpRequest&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;req&lt;/span&gt;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #4ec9b0;"&gt;ILogger&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;log&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #9cdcfe;"&gt;log&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;LogInformation&lt;/span&gt;(&lt;span style="color: #ce9178;"&gt;"C# HTTP trigger function processed a request."&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Parse the request body&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;string&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;requestBody&lt;/span&gt; = &lt;span style="color: #569cd6;"&gt;await&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;StreamReader&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;req&lt;/span&gt;.&lt;span style="color: #9cdcfe;"&gt;Body&lt;/span&gt;).&lt;span style="color: #dcdcaa;"&gt;ReadToEndAsync&lt;/span&gt;();&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;dynamic&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;data&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;JsonConvert&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;DeserializeObject&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;requestBody&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Get the email parameters from the request body&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;string&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;fromEmail&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;data&lt;/span&gt;?.&lt;span style="color: #9cdcfe;"&gt;fromEmail&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;string&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;fromName&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;data&lt;/span&gt;?.&lt;span style="color: #9cdcfe;"&gt;fromName&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;string&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;toEmail&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;data&lt;/span&gt;?.&lt;span style="color: #9cdcfe;"&gt;toEmail&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;string&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;toName&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;data&lt;/span&gt;?.&lt;span style="color: #9cdcfe;"&gt;toName&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;string&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;subject&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;data&lt;/span&gt;?.&lt;span style="color: #9cdcfe;"&gt;subject&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;string&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;body&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;data&lt;/span&gt;?.&lt;span style="color: #9cdcfe;"&gt;body&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Validate the email parameters&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;if&lt;/span&gt; (&lt;span style="color: #9cdcfe;"&gt;string&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;IsNullOrEmpty&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;fromEmail&lt;/span&gt;) || &lt;span style="color: #9cdcfe;"&gt;string&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;IsNullOrEmpty&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;toEmail&lt;/span&gt;) || &lt;span style="color: #9cdcfe;"&gt;string&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;IsNullOrEmpty&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;subject&lt;/span&gt;) || &lt;span style="color: #9cdcfe;"&gt;string&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;IsNullOrEmpty&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;body&lt;/span&gt;))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;return&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;BadRequestObjectResult&lt;/span&gt;(&lt;span style="color: #ce9178;"&gt;"Please provide valid email parameters in the request body."&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;try&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Create a SendGrid client with your API key&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;var&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;apiKey&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;Environment&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;GetEnvironmentVariable&lt;/span&gt;(&lt;span style="color: #ce9178;"&gt;"SENDGRID_API_KEY"&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;var&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;client&lt;/span&gt; = &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;SendGridClient&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;apiKey&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Create a SendGrid message object with the email parameters&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;var&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;from&lt;/span&gt; = &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;EmailAddress&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;fromEmail&lt;/span&gt;, &lt;span style="color: #9cdcfe;"&gt;fromName&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;var&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;to&lt;/span&gt; = &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;EmailAddress&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;toEmail&lt;/span&gt;, &lt;span style="color: #9cdcfe;"&gt;toName&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;var&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;msg&lt;/span&gt; = &lt;span style="color: #9cdcfe;"&gt;MailHelper&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;CreateSingleEmail&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;from&lt;/span&gt;, &lt;span style="color: #9cdcfe;"&gt;to&lt;/span&gt;, &lt;span style="color: #9cdcfe;"&gt;subject&lt;/span&gt;, &lt;span style="color: #9cdcfe;"&gt;body&lt;/span&gt;, &lt;span style="color: #9cdcfe;"&gt;body&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Send the email using the SendGrid client&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #569cd6;"&gt;var&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;response&lt;/span&gt; = &lt;span style="color: #569cd6;"&gt;await&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;client&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;SendEmailAsync&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;msg&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Check the response status code and return accordingly&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;if&lt;/span&gt; (&lt;span style="color: #9cdcfe;"&gt;response&lt;/span&gt;.&lt;span style="color: #9cdcfe;"&gt;StatusCode&lt;/span&gt; == &lt;span style="color: #9cdcfe;"&gt;HttpStatusCode&lt;/span&gt;.&lt;span style="color: #9cdcfe;"&gt;Accepted&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;return&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;OkObjectResult&lt;/span&gt;(&lt;span style="color: #ce9178;"&gt;"Email sent successfully."&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;return&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;BadRequestObjectResult&lt;/span&gt;(&lt;span style="color: #ce9178;"&gt;$"Email failed to send. Status code: {&lt;/span&gt;&lt;span style="color: #9cdcfe;"&gt;response&lt;/span&gt;&lt;span style="color: #ce9178;"&gt;.&lt;/span&gt;&lt;span style="color: #9cdcfe;"&gt;StatusCode&lt;/span&gt;&lt;span style="color: #ce9178;"&gt;}"&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;catch&lt;/span&gt; (&lt;span style="color: #4ec9b0;"&gt;Exception&lt;/span&gt; &lt;span style="color: #9cdcfe;"&gt;ex&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #6a9955;"&gt;// Log and return any exception that occurs&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #9cdcfe;"&gt;log&lt;/span&gt;.&lt;span style="color: #dcdcaa;"&gt;LogError&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;ex&lt;/span&gt;, &lt;span style="color: #ce9178;"&gt;"An error occurred while sending email."&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #c586c0;"&gt;return&lt;/span&gt; &lt;span style="color: #569cd6;"&gt;new&lt;/span&gt; &lt;span style="color: #4ec9b0;"&gt;StatusCodeResult&lt;/span&gt;(&lt;span style="color: #9cdcfe;"&gt;StatusCodes&lt;/span&gt;.&lt;span style="color: #9cdcfe;"&gt;Status500InternalServerError&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="background-color: white; font-size: 14px;"&gt;&lt;blockquote&gt;&lt;span style="font-family: Segoe UI, -apple-system, Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;"&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Best Practices of Software Development in C#</title><link>http://s3tech.blogspot.com/2023/11/best-practices-of-software-development.html</link><category>.Net</category><category>ASP.NET</category><category>C#</category><category>Tips and Tricks</category><author>noreply@blogger.com (S3 Technology Softwares)</author><pubDate>Wed, 8 Nov 2023 20:27:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2684797976388449764.post-2798230192190049044</guid><description>&lt;div class="content" tabindex="0"&gt;&lt;div class="ac-container ac-adaptiveCard"&gt;&lt;div class="ac-textBlock"&gt;&lt;p&gt;Software development is a complex and creative process that requires careful planning, design, implementation, testing, and maintenance. Software developers need to follow some best practices to ensure that their code is consistent, readable, understandable, and maintainable. In this article, we will discuss some of the best practices of software development in C#, a popular and powerful programming language.&lt;/p&gt;&lt;h2&gt;1. Follow Consistent Naming Conventions&lt;/h2&gt;&lt;p&gt;In C#, it is important to follow consistent naming conventions for variables, methods, classes, interfaces, and other elements. Naming conventions help to avoid naming conflicts, improve code readability, and make it easier for developers to understand and navigate the code. Some of the common naming conventions in C# are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use &lt;strong&gt;Pascal case&lt;/strong&gt; for class names, struct names, method names, property names, constant field names, and interface names. Pascal case means that the first letter of each word in the name is capitalized, and there are no underscores or hyphens between words. For example: &lt;code&gt;Customer&lt;/code&gt;, &lt;code&gt;OrderService&lt;/code&gt;, &lt;code&gt;GetTotalPrice&lt;/code&gt;, &lt;code&gt;FirstName&lt;/code&gt;, &lt;code&gt;MaxValue&lt;/code&gt;, &lt;code&gt;IComparable&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;camel case&lt;/strong&gt; for parameter names, local variable names, and private field names. Camel case means that the first letter of the first word in the name is lowercase, and the first letter of each subsequent word is capitalized. There are no underscores or hyphens between words. For example: &lt;code&gt;firstName&lt;/code&gt;, &lt;code&gt;orderService&lt;/code&gt;, &lt;code&gt;totalPrice&lt;/code&gt;, &lt;code&gt;maxValue&lt;/code&gt;, &lt;code&gt;_customer&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;underscore prefix&lt;/strong&gt; for private field names. This helps to distinguish them from local variables and parameters, and to avoid naming collisions with property names. For example: &lt;code&gt;_firstName&lt;/code&gt;, &lt;code&gt;_orderService&lt;/code&gt;, &lt;code&gt;_totalPrice&lt;/code&gt;, &lt;code&gt;_maxValue&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;descriptive and meaningful&lt;/strong&gt; names for variables, methods, classes, and other elements. Avoid using vague, generic, or abbreviated names that do not convey the purpose or functionality of the element. For example: &lt;code&gt;Customer&lt;/code&gt;, &lt;code&gt;OrderService&lt;/code&gt;, &lt;code&gt;GetTotalPrice&lt;/code&gt;, &lt;code&gt;FirstName&lt;/code&gt;, &lt;code&gt;MaxValue&lt;/code&gt; are better than &lt;code&gt;C&lt;/code&gt;, &lt;code&gt;OS&lt;/code&gt;, &lt;code&gt;GTP&lt;/code&gt;, &lt;code&gt;FN&lt;/code&gt;, &lt;code&gt;MV&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;singular names&lt;/strong&gt; for classes, structs, enums, and interfaces. Use &lt;strong&gt;plural names&lt;/strong&gt; for collections, arrays, and lists. For example: &lt;code&gt;Customer&lt;/code&gt;, &lt;code&gt;Order&lt;/code&gt;, &lt;code&gt;Product&lt;/code&gt;, &lt;code&gt;Customers&lt;/code&gt;, &lt;code&gt;Orders&lt;/code&gt;, &lt;code&gt;Products&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;I prefix&lt;/strong&gt; for interface names. This helps to identify them as interfaces, and to avoid naming conflicts with classes that implement them. For example: &lt;code&gt;IComparable&lt;/code&gt;, &lt;code&gt;IDisposable&lt;/code&gt;, &lt;code&gt;IEnumerable&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;generic type parameters&lt;/strong&gt; that start with T, followed by a descriptive name. For example: &lt;code&gt;TKey&lt;/code&gt;, &lt;code&gt;TValue&lt;/code&gt;, &lt;code&gt;TEntity&lt;/code&gt;, &lt;code&gt;TResult&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;2. Use Proper Code Organization&lt;/h2&gt;&lt;p&gt;Code organization is another important aspect of software development in C#. Code organization refers to how the code is structured, grouped, and formatted in a logical and consistent way. Code organization helps to improve code readability, maintainability, and modularity. Some of the best practices for code organization in C# are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use &lt;strong&gt;namespaces&lt;/strong&gt; to group related classes, structs, enums, interfaces, and delegates. Namespaces help to avoid naming conflicts, and to provide a logical hierarchy for the code. For example: &lt;code&gt;System&lt;/code&gt;, &lt;code&gt;System.IO&lt;/code&gt;, &lt;code&gt;System.Collections.Generic&lt;/code&gt;, &lt;code&gt;System.Linq&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;access modifiers&lt;/strong&gt; to specify the visibility and accessibility of classes, methods, properties, fields, and other elements. Access modifiers help to control the scope and encapsulation of the code, and to prevent unauthorized or unintended access. For example: &lt;code&gt;public&lt;/code&gt;, &lt;code&gt;private&lt;/code&gt;, &lt;code&gt;protected&lt;/code&gt;, &lt;code&gt;internal&lt;/code&gt;, &lt;code&gt;protected internal&lt;/code&gt;, &lt;code&gt;private protected&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;regions&lt;/strong&gt; to group related code blocks within a class or a method. Regions help to collapse and expand the code, and to provide a descriptive label for the code. For example: &lt;code&gt;#region Fields&lt;/code&gt;, &lt;code&gt;#region Properties&lt;/code&gt;, &lt;code&gt;#region Constructors&lt;/code&gt;, &lt;code&gt;#region Methods&lt;/code&gt;, &lt;code&gt;#endregion&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;indentation&lt;/strong&gt; to align the code blocks and statements within a class or a method. Indentation helps to show the structure and hierarchy of the code, and to improve code readability. For example: use four spaces or one tab for each level of indentation.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;whitespace&lt;/strong&gt; to separate the code blocks and statements within a class or a method. Whitespace helps to create a clear and consistent layout for the code, and to improve code readability. For example: use one blank line between methods, properties, fields, and other elements; use one space before and after operators, commas, semicolons, and parentheses; use one space after keywords, such as &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;switch&lt;/code&gt;, &lt;code&gt;catch&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;comments&lt;/strong&gt; to explain the purpose, functionality, logic, or algorithm of the code. Comments help to document the code, and to make it easier for developers to understand and maintain the code. For example: use &lt;code&gt;//&lt;/code&gt; for single-line comments, and &lt;code&gt;/* */&lt;/code&gt; for multi-line comments.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;3. Avoid Magic Numbers and Strings&lt;/h2&gt;&lt;p&gt;Magic numbers and strings are literal values that are hard-coded in the code, and that have no obvious meaning or significance. Magic numbers and strings make the code difficult to understand, maintain, and modify. They also introduce potential errors and bugs, and reduce the flexibility and reusability of the code. Some of the best practices to avoid magic numbers and strings in C# are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use &lt;strong&gt;constants&lt;/strong&gt; to declare and assign meaningful names to magic numbers and strings. Constants are immutable values that can be used throughout the code, and that can be easily changed in one place if needed. For example: &lt;code&gt;const int MaxLength = 10;&lt;/code&gt;, &lt;code&gt;const string ConnectionString = \"Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True\";&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;enumerations&lt;/strong&gt; to declare and assign meaningful names to a set of related magic numbers. Enumerations are named constants that represent a group of values, and that can be used to improve code readability and type safety. For example: &lt;code&gt;enum DayOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };&lt;/code&gt;, &lt;code&gt;enum Color { Red, Green, Blue, Yellow, Black, White };&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;configuration files&lt;/strong&gt; to store and retrieve magic numbers and strings that are related to the application settings, such as connection strings, app settings, user preferences, etc. Configuration files are external files that can be easily edited and updated without recompiling the code, and that can be used to provide different values for different environments, such as development, testing, and production. For example: &lt;code&gt;appsettings.json&lt;/code&gt;, &lt;code&gt;web.config&lt;/code&gt;, &lt;code&gt;app.config&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;4. Handle Exceptions Properly&lt;/h2&gt;&lt;p&gt;Exceptions are unexpected or abnormal events that occur during the execution of the code, and that disrupt the normal flow of the program. Exceptions can be caused by various reasons, such as invalid input, network failure, file not found, division by zero, etc. Exceptions can result in undesirable outcomes, such as data loss, memory leak, security breach, or application crash. Therefore, it is essential to handle exceptions properly in C#. Some of the best practices for exception handling in C# are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use &lt;strong&gt;try-catch-finally&lt;/strong&gt; blocks to enclose the code that may throw an exception, and to provide appropriate actions for handling the exception. The &lt;code&gt;try&lt;/code&gt; block contains the code that may cause an exception; the &lt;code&gt;catch&lt;/code&gt; block contains the code that executes when an exception occurs; the &lt;code&gt;finally&lt;/code&gt; block contains the code that always executes, regardless of whether an exception occurs or not. For example:&lt;/li&gt;&lt;/ul&gt;&lt;cib-code-block clipboard-data="try
{
    //code that may throw an exception
}
catch (Exception ex)
{
    //code that handles the exception
}
finally
{
    //code that always executes
}
" code-lang="csharp"&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;span class="hljs-keyword"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="hljs-keyword"&gt;try&lt;/span&gt;
{
    &lt;span class="hljs-comment"&gt;//code that may throw an exception&lt;/span&gt;
}
&lt;span class="hljs-keyword"&gt;catch&lt;/span&gt; (Exception ex)
{
    &lt;span class="hljs-comment"&gt;//code that handles the exception&lt;/span&gt;
}
&lt;span class="hljs-keyword"&gt;finally&lt;/span&gt;
{
    &lt;span class="hljs-comment"&gt;//code that always executes&lt;/span&gt;
}
&lt;/blockquote&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/cib-code-block&gt;&lt;ul&gt;&lt;li&gt;Use &lt;strong&gt;specific exception types&lt;/strong&gt; to catch and handle different kinds of exceptions. Specific exception types help to provide more information and context about the exception, and to handle the exception more appropriately and accurately. For example: &lt;code&gt;FileNotFoundException&lt;/code&gt;, &lt;code&gt;InvalidOperationException&lt;/code&gt;, &lt;code&gt;ArgumentNullException&lt;/code&gt;, &lt;code&gt;DivideByZeroException&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Use &lt;strong&gt;multiple catch blocks&lt;/strong&gt; to catch and handle different kinds of exceptions separately. Multiple catch blocks help to provide different actions for different exceptions, and to handle the exceptions in the order of specificity. For example:&lt;/li&gt;&lt;/ul&gt;&lt;cib-code-block clipboard-data="try
{
    //code that may throw an exception
}
catch (FileNotFoundException ex)
{
    //code that handles file not found exception
}
catch (DivideByZeroException ex)
{
    //code that handles division by zero exception
}
catch (Exception ex)
{
    //code that handles any other exception
}
" code-lang="csharp"&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;span class="hljs-keyword"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="hljs-keyword"&gt;try&lt;/span&gt;
{
    &lt;span class="hljs-comment"&gt;//code that may throw an exception&lt;/span&gt;
}
&lt;span class="hljs-keyword"&gt;catch&lt;/span&gt; (FileNotFoundException ex)
{
    &lt;span class="hljs-comment"&gt;//code that handles file not found exception&lt;/span&gt;
}
&lt;span class="hljs-keyword"&gt;catch&lt;/span&gt; (DivideByZeroException ex)
{
    &lt;span class="hljs-comment"&gt;//code that handles division by zero exception&lt;/span&gt;
}
&lt;span class="hljs-keyword"&gt;catch&lt;/span&gt; (Exception ex)
{
    &lt;span class="hljs-comment"&gt;//code that handles any other exception&lt;/span&gt;
}
&lt;/blockquote&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/cib-code-block&gt;&lt;ul&gt;&lt;li&gt;Use &lt;strong&gt;throw&lt;/strong&gt; keyword to rethrow an exception, or to throw a new exception. The &lt;code&gt;throw&lt;/code&gt; keyword helps to propagate the exception to the caller, or to create a custom exception with a specific message or inner exception. For example:&lt;/li&gt;&lt;/ul&gt;&lt;cib-code-block clipboard-data="try
{
    //code that may throw an exception
}
catch (Exception ex)
{
    //code that handles the exception
    throw; //rethrow the exception
    //or
    throw new CustomException(\&amp;quot;Custom message\&amp;quot;, ex); //throw a new exception
}
" code-lang="csharp"&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;span class="hljs-keyword"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="hljs-keyword"&gt;try&lt;/span&gt;
{
    &lt;span class="hljs-comment"&gt;//code that may throw an exception&lt;/span&gt;
}
&lt;span class="hljs-keyword"&gt;catch&lt;/span&gt; (Exception ex)
{
    &lt;span class="hljs-comment"&gt;//code that handles the exception&lt;/span&gt;
    &lt;span class="hljs-keyword"&gt;throw&lt;/span&gt;; &lt;span class="hljs-comment"&gt;//rethrow the exception&lt;/span&gt;
    &lt;span class="hljs-comment"&gt;//or&lt;/span&gt;
    &lt;span class="hljs-keyword"&gt;throw&lt;/span&gt; &lt;span class="hljs-keyword"&gt;new&lt;/span&gt; CustomException(\&lt;span class="hljs-string"&gt;"Custom message\", ex); //throw a new exception
}
&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="hljs-string"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/cib-code-block&gt;&lt;ul&gt;&lt;li&gt;Use &lt;strong&gt;finally&lt;/strong&gt; block to release any resources that are acquired in the &lt;code&gt;try&lt;/code&gt; block, such as files, streams, sockets, database connections, etc. The &lt;code&gt;finally&lt;/code&gt; block helps to ensure that the resources are properly disposed and freed, regardless of whether an exception occurs or not. For example:&lt;/li&gt;&lt;/ul&gt;&lt;cib-code-block clipboard-data="FileStream fs = null;
try
{
    fs = new FileStream(\&amp;quot;test.txt\&amp;quot;, FileMode.Open);
    //code that may throw an exception
}
catch (Exception ex)
{
    //code that handles the exception" code-lang="csharp"&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;blockquote&gt;FileStream fs = &lt;span class="hljs-literal"&gt;null&lt;/span&gt;;
&lt;span class="hljs-keyword"&gt;try&lt;/span&gt;
{
    fs = &lt;span class="hljs-keyword"&gt;new&lt;/span&gt; FileStream(\&lt;span class="hljs-string"&gt;"test.txt\", FileMode.Open);
    //code that may throw an exception
}
catch (Exception ex)
{
    //code that handles the exception&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;      }&amp;nbsp;&lt;/p&gt;&lt;span class="hljs-string"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/cib-code-block&gt;&lt;/div&gt;&lt;div aria-hidden="true" class="ac-horizontal-separator"&gt;&lt;/div&gt;&lt;/div&gt;&lt;cib-overlay&gt;&lt;/cib-overlay&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>[SOLVED] Portronics Sound Drum turns off every 10 mins</title><link>http://s3tech.blogspot.com/2022/11/solved-portronics-sound-drum-turns-off.html</link><author>noreply@blogger.com (S3 Technology Softwares)</author><pubDate>Tue, 15 Nov 2022 01:00:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2684797976388449764.post-3736681567268459254</guid><description>&lt;p&gt;Sound Drum switches off automatically after 10 mins of playing. There's a glitch in the software for power saving feature.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Due to the glitch, device turns off even if you're connect to bluetooth and playing music.&lt;/p&gt;&lt;p&gt;This can be fixed by upgrading the software of the device. Step by step process has been mentioned below for the upgrade.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Steps.&lt;/p&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Download this zip file (&lt;a href="https://drive.google.com/file/d/137SBmniDIX0sDkVytnzwt2hnv1gRuNQ9/view?usp=sharing" rel="nofollow" target="_blank"&gt;Download&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Extract and copy the files on the root of an empty USB drive (formatted as exFat)&lt;/li&gt;&lt;li&gt;Power on the speaker&lt;/li&gt;&lt;li&gt;Input USB drive on the back of the speaker&lt;/li&gt;&lt;li&gt;The speaker will update itself, and power off by itself (usually takes 1-3 secs)&lt;/li&gt;&lt;li&gt;Remove the USB, and power on,&lt;/li&gt;&lt;li&gt;Check running your device for more than 10 mins now... it won't turn off automatically now.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>[Solved] Identity Server 4 caching not working issue </title><link>http://s3tech.blogspot.com/2022/11/solved-identity-server-4-caching-not.html</link><category>.Net</category><category>C#</category><category>Programming</category><author>noreply@blogger.com (S3 Technology Softwares)</author><pubDate>Tue, 15 Nov 2022 01:00:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2684797976388449764.post-3702440053334444865</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Hey guys, I've gone through some of the issue created on IdentityServer4 which were closed without proper solution.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;"Issue: Identity Server 4 Caching is not working"&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In simple words, it works like charm. If you know how the DI works then you even get this issue.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here's a simple solution:&lt;/p&gt;&lt;p&gt;Make sure you add the below 4 store caching API at the end of identity store configurations.&lt;/p&gt;&lt;p&gt;What's the cause: If the cache DI is added before any other configuration then the Cache DI would be overwritten with the new DI.&lt;/p&gt;&lt;div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;"&gt;&lt;div&gt;                .AddInMemoryCaching()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .AddClientStoreCache&amp;lt;ClientStore&amp;gt;()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .AddResourceStoreCache&amp;lt;ResourceStore&amp;gt;()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .AddConfigurationStoreCache()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .AddCorsPolicyCache&amp;lt;CorsPolicyService&amp;gt;();&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Complete solutions:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEjoumt2VwDEeSDrcviz-AFEcc7fzpbuJNdv5hsZYnMMdRLCxXRfl0IdigFNrp8u8nYmZsIMMA1Org4dBcEsCAX7bO3iuuO4yL-H-hB4Apdq2XgQti4WsewdHX3hQ4P7OK-YUc5O3MeH19bjp9p5IFw73RwOA-BnVaPheMLoAjaZLJHs4CaPLJ_uI2hZjw" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" data-original-height="675" data-original-width="908" height="476" src="https://blogger.googleusercontent.com/img/a/AVvXsEjoumt2VwDEeSDrcviz-AFEcc7fzpbuJNdv5hsZYnMMdRLCxXRfl0IdigFNrp8u8nYmZsIMMA1Org4dBcEsCAX7bO3iuuO4yL-H-hB4Apdq2XgQti4WsewdHX3hQ4P7OK-YUc5O3MeH19bjp9p5IFw73RwOA-BnVaPheMLoAjaZLJHs4CaPLJ_uI2hZjw=w640-h476" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Hope this solves your issue.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Issues:::&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/IdentityServer/IdentityServer4/issues/2191"&gt;https://github.com/IdentityServer/IdentityServer4/issues/2191&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/51560620/caching-does-not-appear-to-work-in-identity-server-4"&gt;https://stackoverflow.com/questions/51560620/caching-does-not-appear-to-work-in-identity-server-4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/43858231/how-to-implement-caching-on-identityserver4"&gt;https://stackoverflow.com/questions/43858231/how-to-implement-caching-on-identityserver4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/IdentityServer/IdentityServer4/issues/5007"&gt;https://github.com/IdentityServer/IdentityServer4/issues/5007&lt;/a&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEjoumt2VwDEeSDrcviz-AFEcc7fzpbuJNdv5hsZYnMMdRLCxXRfl0IdigFNrp8u8nYmZsIMMA1Org4dBcEsCAX7bO3iuuO4yL-H-hB4Apdq2XgQti4WsewdHX3hQ4P7OK-YUc5O3MeH19bjp9p5IFw73RwOA-BnVaPheMLoAjaZLJHs4CaPLJ_uI2hZjw=s72-w640-h476-c" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Auto .Net code Generation based on SQL Table</title><link>http://s3tech.blogspot.com/2010/12/auto-net-code-generation-based-on-sql.html</link><category>.Net</category><category>ASP.NET</category><category>C#</category><category>Programming</category><author>noreply@blogger.com (S3 Technology Softwares)</author><pubDate>Mon, 6 Dec 2010 15:37:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2684797976388449764.post-589778893293570808</guid><description>&lt;p&gt;It has always been a heck for programmers to start form scratch when developing Asp.Net pages with some common functionality like Add / Delete/ Update record &amp;amp; Design Html. Well there’s no doubt that all programmers are lazy. Lazy in the sense, who believe in &lt;strong&gt;Smart&lt;/strong&gt; work &amp;amp; minimizing there work &amp;amp; rework. Definitely, I’m also one of them. &lt;/p&gt;  &lt;p&gt;Alright, lets start with the main topic. While developing Any Asp.net Page what we need &amp;amp; how much time it takes ?? &lt;/p&gt;  &lt;p&gt;Here’s the answer… :&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;HTML Page with Server Controls, (Appx. 20 mins.) &lt;/li&gt;    &lt;li&gt;Code Behind File to handle Events, (Appx. 20 mins.) &lt;/li&gt;    &lt;li&gt;A DB Class which contains methods for Adding/ Updating &amp;amp; Deleting Records from DB Tables. (Appx. 20 mins) &lt;/li&gt;    &lt;li&gt;Stored Procedures to perform DB Actions (Appx. Time 60 mins.) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;For Creating all these things this usually takes approximately 2-8 Hrs depending on the complexity of your DB Tables. &lt;/p&gt;  &lt;p&gt;But, what if you get all the above thing in &lt;font color="#0080c0"&gt;&lt;strong&gt;JUST A CLICK&lt;/strong&gt;&lt;font color="#000000"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt; That sounds Cool ! isn’t it ?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;At first, I tried searching for application that can perform this activity. But was unable to get any result for this. So After digging up Google, I made my final decision to &lt;strong&gt;Create Such Application By My Own. &lt;/strong&gt;And here’s what I have &lt;strong&gt;“Express.NetArchitect”.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgphFdecJ4RKC7GB34b01tlqtZBLbPPmS6Bz42S4WgW_P2U5Qgw8_QOXRRd0bQUZgHwLo8i69mnkfVg5JBabS0LqM7KyaOJUX-WH186yfb5kk056l8t-CH7r2a2IxJLaggCfbAIcVDyvF7z/s1600-h/image%5B22%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNREvmCdt9l484vergleelPIukXkRy5_iOmldWLyniMNAgk4Yn_8wbY3O3IWEtEtdLMUTn7fuzaR-OVopO1hYnv0dUOaJ6FfIQrz2OPCAeKS9kFX-T0v4n9Pii2Im94kpYgYoquotgITKR/?imgmax=800" width="644" height="461" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtADdaLhWB-guHf64za0ICiyngQ5-5NoQYbQEf3G51qAiwLo4LoKRLc4vK33UyygOYAJjCQBvCJttKHMt8L9eGRSnBNX1zqNPXNtJFV4TomgVXrBxmrFGTDxvCWuc_PkqIG8buSGY-zzz6/s1600-h/image%5B21%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkntpgPtobCLnJn09d9f_3W-xYp5DAD2-ID0z3ZN5ptn1SY-G0IVk1N7iGEINqZ4Akr6hDbAmFoKBzqtE649XB0FAQbTR2M2IAujqzgThtREgivwGV5XcSDXvTIgAo90KEUKogbH3FEXJf/?imgmax=800" width="644" height="461" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXpHm8UJgWzjnJvhLwmP7Ui8e3se2UhPMvfNLo0p4CmUqhso6jgmJ3DKniOb2xcSSLPX71mvhPePWYTpt79j_2N6S8A27OXp2srA6tAn-6teW7GtsEF2kMJekO-3UsuBGYfVXqmLDLKuW9/s1600-h/image%5B20%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwAxyEGfcBWticscn1CY_j46ZoCybbaQiIb4MsaJGGwvWgzGWeSnuRgmvuwquvHEs9hoSLwIjZ8jZQwKjJXCoxuRbgf5L8C8YI7xvUugdQXnv323pbiKbXXB4UDU9yVAfJFp5OaWS90iBj/?imgmax=800" width="644" height="461" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY0_HXp6TdJLuxJBtJfy1WcCiwE0hQS27CSfIHVNvCKyI1yJDSjNUHw_CwfJgpyahsQIhWMvpuJzWq06kVDLxV8zo9DwSgYmk2Ey8L_J6GEEYirb9-mnUprraozXr2Pbwit17MFixIebU0/s1600-h/image%5B26%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLoazPMCV-AmaNjURzM6SXdetW-_kOaLXJ09qpYRZtaT3dhvtmEUcQ3ZMHewCxawjoHB_oOFvQLrwSe6pEhyphenhyphenLAgIodnhIsE_11TXMNHthLjf8TwwUv1OvmwgtRalZM11J51lBqeCNrQiOn/?imgmax=800" width="644" height="461" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Complete Downloadable Source Code Available Below: &lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;(RapidShare) &lt;a href="http://rapidshare.com/files/435217581/Express.NetArchitect_Source.zip"&gt;Download Source&lt;/a&gt; (Size : 107 KB)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;(RapidShare) &lt;a href="http://rapidshare.com/files/435217669/Express.NetArchitect_Exe.zip"&gt;Download Executable&lt;/a&gt;(Size : 32 KB)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If you like my post kindly leave your comments &amp;amp; suggestion below. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If you believe that this application needs to have additional features and this can be experimented then we can take it CodePlex.com and your suggestion we can make it a boon for .Net programmers.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Thanks Good luck.&lt;/strong&gt;&lt;/p&gt;  </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNREvmCdt9l484vergleelPIukXkRy5_iOmldWLyniMNAgk4Yn_8wbY3O3IWEtEtdLMUTn7fuzaR-OVopO1hYnv0dUOaJ6FfIQrz2OPCAeKS9kFX-T0v4n9Pii2Im94kpYgYoquotgITKR/s72-c?imgmax=800" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">28</thr:total></item></channel></rss>