Below is an example of .Net core 3.1 Console App that is reading a mailbox on Exchange and checking the count of mails. If the mail count cross a certain threshold, it’ll check for an e-mail older than 2 hours to send an alert.
Such an example can be used to schedule alerts or log information if you’re tracking mails in a mailbox.
Install Nuget package Microsoft.Exchange.WebServices to use ExchangeService class.
public static void Main(string args)
string Subject = "";
string sUsername = ConfigurationManager.AppSettings.Get("UserName");
var section = ConfigurationManager.GetSection("secureAppSettings") as NameValueCollection;
string vCount = ConfigurationManager.AppSettings.Get("Count");
int Count = Convert.ToInt32(vCount);
string sPassword = ConfigurationManager.AppSettings.Get("Password");
string sDomain = ConfigurationManager.AppSettings.Get("Domain");
TimeZoneInfo INDIAN_ZONE = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime indianTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, INDIAN_ZONE);
DateTime comparedate = indianTime.AddHours(-2);
DateTime MailDateTime = comparedate;
ExchangeService exchange = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
exchange.Credentials = new WebCredentials(sUsername, sPassword, sDomain);
exchange.Url = new Uri(ConfigurationManager.AppSettings.Get("ExchangeUrl"));
Folder inbox = Folder.Bind(exchange, WellKnownFolderName.Inbox);
var oSendemail = 0;
TextlogMessage = "Start With count:" + inbox.TotalCount;
if (inbox.TotalCount > Count)
Console.WriteLine("Count " + inbox.TotalCount);
ItemView view = new ItemView(1);
var findResults = exchange.FindItems(WellKnownFolderName.Inbox, view);
foreach (Item item in findResults.Items)
Console.WriteLine("Test: " + item.DateTimeReceived + " %" + comparedate);
DateTime newdate = TimeZoneInfo.ConvertTimeToUtc(item.DateTimeReceived);
int Dresult = DateTime.Compare(newdate, comparedate);
if (Dresult < 0)
Console.WriteLine("Alert " + "Sub" + item.Subject + newdate + " %" + comparedate);
oSendemail = 1;
MailDateTime = newdate;
Subject = item.Subject;
if (oSendemail > 0)
Program p = new Program();
//To Do Send Email Logic..
p.SendEmail(exchange, oSendemail, inbox.TotalCount, TextlogMessage);
TextlogMessage = TextlogMessage + " EmailTime: " + MailDateTime + "CompareTime " + comparedate + " Alert Sent Subject : " + Subject;
//To Do logging..
While trying to install Docker Desktop through the installer on my Windows 10 machine I kept got the error as mentioned in the title of this post. The installer can be downloaded from here which is the Community version since we’re working on the development environment.
To resolve this, we need to take care of some prerequisites as mentioned below:
Install Hyper-V and enable it. If not already done, run the following commands in PowerShell in Admin mode:
I’ve found LogParser tool to be very useful for querying log files especially whenever I am required to analyze the IIS log files. You can download LogParser from here.
In this example, I’ll be querying multiple Log files unique users with Windows Authentication visiting the site. Click on the icon “Choose Log files/folders to query” and Add all files which you want to search. Open a New Query window and in the Query editor, enter the below query:
SELECT DISTINCT cs-username FROM '[LOGFILEPATH]'
This works much like SQL queries where IIS log headers work like columns. The above query will simply return distinct users visiting the site. Make sure the Log Type selected is W3CLOG.
If you want to Output all the data to a .csv file, then you can use the below query:
SELECT SELECT DISTINCT cs-username INTO '[OUTFILEPATH]users.CSV' FROM '[LOGFILEPATH]'
You can check the default export directory where the file is created. It should be something like this “C:\Users\<username>\AppData\Roaming\ExLPT\Log Parser Studio\Output”.
You might often need to connect to the SQL Server database say in your classic ASP Application using the ODBC System DSN (Data Source Name). To do this, we need to use the 32-bit application odbcad32.exe under the SysWOW64 folder. The steps are as below: Go to the SystemDSN tab -> Click on Add
Select the SQL Server driver SQLSRV32.DLL:
Give a name and Server details:
Provide the SQL Login details. You can also use Windows Authentication if it serves the purpose.
Select the required database by checking “Change the default database to:”
Click on Finish and Test Connection.
To use this in Classic ASP, add the DSN details in your cnconst file as below:
Geckodriver is an executable that interacts with Firefox installed on the System to run automated tests by running the Firefox instance either fully or in ghost-mode. Geckodriver creates profiles in the Windows temp folder that can be of huge size depending on the Profile created for the Firefox driver. The folder name is of the format “rust_mozprofile*”.
The following Powershell script will delete such folders by searching for this string format under C:\windows\temp and also creates logs for the deleted folders.
ASP is a program based on Microsoft Technologies that runs inside a web server.
Below is the method used for calling a Stored Procedure in MSSQLSERVER using classic ASP scripting.
The variable SystemDSN holds the value of the Data Source Name that is configured using Odbcad.exe under the SysWow64 folder on the Server. Select the required driver for SQL Server for the DSN configuration to connect to your database.
Set cn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = cn
cmd.CommandText = "usp_GetJSON"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append(cmd.CreateParameter("@ReturnJson", adVarchar, adParamOutput,100000))
'show alert in case of failure.
ReturnValue = cmd.Parameters("@ReturnJson").Value
if ReturnValue <> " " then
jsonObject = ReturnValue
'set the flag as 1 to ensure that JSON has been returned from SP to be used later.
The above example shows the SP takes 3 input parameters and 1 output parameter. The SP returns a jsonObject assigned to the ReturnValue.
The ADO Connection Object is used to create an open connection to a data source which lets you access and manipulate a database. The ADO Command object is used to execute a single query against a database using which you can perform CRUD operations.
The json can be generated in the SP using the “FOR JSON PATH” feature for SQL Server. However, json is used just for this example. The return value can be anything as per your requirement.
This post is based on a setup of an asp.net core application. Configuration is read in the Startup class upon the Application startup. The Configure method in this class calls the ApiBootstrapper to check whether the connection string for Dev or Production is required. This can be further used to call the Stored Procedures or query tables using ADO.Net.
Appsettings.json file is the asp.net core config file. This file contains the Connection Strings is as shown below:
First, you need to access the mailbox on the Microsoft Exchange Server and then get the mailbox statistics for the count of e-mails. The credentials you use should have admin access on the Server to be able to access the mailbox.
The following script uses some credentials stored in a file on the machine where the script is running and connects to a Session on the Microsoft Exchange Server:
Reverse Proxy is an intermediate Server that might be exposed to the Internet that can help secure your incoming traffic from the Client and forwarding the request to a back-end service that might be on a Private network. This returns the response back to the Client and hides your Web Server from the Outside world.
You need the following IIS extensions for configuring IIS Reverse Proxy: