2012-07-25 13 views
5

Sto lavorando su un'applicazione console che recupera alcuni dati e chiama il metodo MVC3 Action e trasmette i dati recuperati come parametro a quel metodo di azione. Ma il mio problema è come applicazione console avere sapere che i dati passano con successo \ MVC metodo di azione chiamata correttamente e su richiesta MVC server è in esecuzione o menoC# come chiamare il metodo MVC Action dall'applicazione console

qui è il mio codice:

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    
} 

Si prega di guida me .. .

Grazie, Raj

risposta

8

Non puoi invocare un'azione MVC come avete fatto qui, un'applicazione desktop e applicazioni web sono indipendenti .. esistono come due entità distinte .. Ora se è necessario chiamare un'azione mvc dall'applicazione desktop è come chiamare qualsiasi altro endpoint Web utilizzando l'applicazione desktop ed è necessario creare una richiesta HTTP.

Nell'applicazione desktop creare un HTTPRequest come indicato di seguito:

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

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

se si desidera passare alcuni dati per la vostra azione parametri cioè di azione si potrebbe costruire il vostro URL come segue:

per Get Richiesta

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

e per la richiesta POST

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(); 
+0

ok ho capito ma come posso passare il mio parametro oggetto (Dati) al metodo di azione mvc utilizzando il codice sopra, ad esempio httpwebrequest – Raj

+0

aggiornato la mia risposta ... – Baz1nga

+0

@ Baz1nga Immagino che requestWriter.Write() abbia parametri? –

0

Credo che è necessario utilizzare WebClient o HttpWebRequest classe per richiamare un metodo di azione.

0

È possibile farlo nel modo in cui lo si sta facendo. Tuttavia, la maggior parte delle applicazioni web ha molte dipendenze che è necessario spegnere o usare un framework come Moq

Faccio spesso riferimento alla DLL contenente le mie app MVC nelle librerie di test delle unità, che è equivalente allo scenario che si sta descrivendo. Uso Moq per fornire un contesto di richiesta e altre dipendenze richieste dai controller, come lo stato sessione, i database, ecc.

Se si utilizzano dipendenze false, è possibile che l'azione del controller sia inutile. In tal caso, seguirò il consiglio delle altre risposte.

Questo è un argomento grande e complicato ed è discusso in molti blog e in altre domande StackOverflow sul test unitario asp.net mvc.

+0

non ha mai detto che stava facendo questo per testare .. – Baz1nga

Problemi correlati