# Integrate Salesforce with C# or ASP.NET MVC Application
**by:** Dhanashri Karale     **in:**  [Programming](https://www.systenics.com/blogs/category/programming)     **tags:**  [*C#*](https://www.systenics.com/blogs/tag/c-sharp) ,  [*ASP.NET MVC*](https://www.systenics.com/blogs/tag/aspnet-mvc) ,  [*SalesForce*](https://www.systenics.com/blogs/tag/salesforce)
## Introduction

This tutorial explains the manual steps to authenticate Salesforce
account using C# or ASP.NET MVC application. Even though the sample
provided is C# Console application, we have implemented the same with
ASP.NET MVC application for RainWorx's AuctionWorx software.

## Pre-requisites

1. Salesforce Test Account
2. Visual Studio (C#)

## Manual Steps for SalesForce Registration

1. Let's start by creating a new project with name -
"SalesForceAuthSample". Open Visual Studio, New Project -> Visual C#
-> Windows -> Console Application

[New Project" style="max-width: 100%;">](https://www.systenics.com/media/21552/01.webp)
Figure 1: Visual Studio > New Project

2. Create [Salesforce test account](https://login.salesforce.com/).

3. Add references for "DeveloperForce.force" using NuGet Package Manager
in your project.

4. For Salesforce Integration, we need following information such as
Security Token, Consumer Key, Consumer Secret, Username, Password and
IsSandBoxUser.

**Security Token:** We will get Security Token from the following
location - Dropdown with Username located at top right corner > My Settings
> Personal > Reset My Security Token. On clicking "Reset Security Token"
button, the new Security Token will be sent on registered email address.

[Security Token" style="max-width: 100%;">](https://www.systenics.com/media/21553/02.webp)
Figure 2: Salesforce > Security Token

**Consumer Key and Consumer Secret:** We will get Consumer Key
and Consumer Secret from the following location - Set Up > Create >
App > New. Enter all required data. Callback URL is very important for
authentication purpose and then Save it.

[Consumer Secret and Consumer Key" style="max-width: 100%;">](https://www.systenics.com/media/21554/03.webp)
Figure 3: Salesforce > Consumer Secret and Consumer Key

After saving the API, it will show page similar to screenshot given
below.

[Apps" style="max-width: 100%;">](https://www.systenics.com/media/21555/04.webp)
Figure 4: Salesforce > Apps

Click on Connected App Name and you will get Consumer Secret and
Consumer Key.

[Connected App Details" style="max-width: 100%;">](https://www.systenics.com/media/21556/05.webp)
Figure 5: Salesforce > Connected App Details

**Username and Password:** The Username and Password will be
your test Salesforce account login username and password.

**IsSandBoxUser:** In code given below, we will set this parameter
to "true".

```
using Salesforce.Common;
using Salesforce.Force;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SalesForceAuthSample
{
class Program
{
private static readonly string SecurityToken = System.Configuration.ConfigurationManager.AppSettings["SecurityToken"];
private static readonly string ConsumerKey = System.Configuration.ConfigurationManager.AppSettings["ConsumerKey"];
private static readonly string ConsumerSecret = System.Configuration.ConfigurationManager.AppSettings["ConsumerSecret"];
private static readonly string Username = System.Configuration.ConfigurationManager.AppSettings["Username"];
private static readonly string Password = System.Configuration.ConfigurationManager.AppSettings["Password"];
private static readonly string IsSandboxUser = System.Configuration.ConfigurationManager.AppSettings["IsSandboxUser"];

static void Main(string[] args)
{
try
{
var task = RunSample();
task.Wait();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
var innerException = e.InnerException;
while (innerException != null)
{
Console.WriteLine(innerException.Message);
Console.WriteLine(innerException.StackTrace);
innerException = innerException.InnerException;
}
}
}

private static async Task RunSample()
{
try
{
var auth = new AuthenticationClient();
// Authenticate with Salesforce
Console.WriteLine("Authenticating with Salesforce");
var url = IsSandboxUser.Equals("true", StringComparison.CurrentCultureIgnoreCase)
? "https://login.salesforce.com/services/oauth2/token"
: "https://test.salesforce.com/services/oauth2/token";
await auth.UsernamePasswordAsync(ConsumerKey, ConsumerSecret, Username, Password, url);
Console.WriteLine("Connected to Salesforce");
var client = new ForceClient(auth.InstanceUrl, auth.AccessToken, auth.ApiVersion);
// retrieve all accounts
Console.WriteLine("Get Accounts");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}

}
}

```

In next blog, I will explain about simple CRUD operations which we can
perform on Salesforce.

Link - [Salesforce CRUD operations using C# in AuctionWorx (ASP.NET MVC
application)](https://www.systenics.com/blogs/salesforce-crud-operations-using-c-in-auctionworx-aspnet-mvc-application)

Happy Coding :)