Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# how to call MVC Action method from console application

Tags:

c#

asp.net-mvc

I am working on console application which fetch some data and call the MVC3 Action method and pass the fetched data as a parameter to that action method. But my problem is how console application get know that data pass successfully\MVC action method call correctly and on server mvc application is running or not

here is my code :

public static void Main()
{
// Mvc application object intialization
                HomeController object_Mail = new HomeController();
            // Mvc action method call
           object_Mail.mailgateway(mvcemails); //mvcemails parameter passed to Actionmethod               
}

Please guide me...

Thanks, Raj

like image 853
Raj Avatar asked Jul 25 '12 05:07

Raj


1 Answers

You cant invoke an MVC action like you have done here, a desktop application and web application are unrelated.. They exist as two distinct entities.. Now if you need to call an mvc action from your desktop application it is like calling any other web end point using your desktop application and you need to create a HTTPRequest..

In your desktop application create a HTTPRequest as follows:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://"+ <your mvc action endpoint> )
request.Method = "GET";
//specify other request properties

try
{
    response = (HttpWebResponse)request.GetResponse();
}

if you want to pass some data to your action i.e action parameters you could build your url as follows:

For Get Request

string url = string.Format(
            "http://mysite/somepage?key1={0}&key2={1}",
            Uri.EscapeDataString("value1"),
            Uri.EscapeDataString("value2"));

and For POST REQUEST

webRequest.Method = "POST";
var data=string.Format("key1={0}&key2={1}",Uri.EscapeDataString("value1"),Uri.EscapeDataString("value2")");
StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write();
requestWriter.Close();
like image 98
Baz1nga Avatar answered Sep 21 '22 21:09

Baz1nga