2012-07-25 103 views
5

我正在处理控制台应用程序,它获取一些数据并调用MVC3 Action方法并将获取的数据作为参数传递给该操作方法。 但我的问题是控制台应用程序是如何被知道的数据顺利通过\ MVC操作方法调用正确的服务器MVC应用程序正在运行或不C#如何从控制台应用程序调用MVC操作方法

这里是我的代码:

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    
} 

请指导我.. 。

感谢, 拉吉

回答

8

像你在这里做你不能调用MVC动作,一个桌面应用程序和Web应用程序是无关的。他们有两个不同的实体..现在,如果您需要从桌面应用程序调用mvc动作,就好像使用桌面应用程序调用任何其他Web终点,并且需要创建HTTP请求。

在您的桌面应用程序中创建HTTPRequest,如下所示:

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

try 
{ 
    response = (HttpWebResponse)request.GetResponse(); 
} 
如果你希望将一些数据传递到你的动作,即动作参数,你可以建立自己的网址如下

对于Get请求

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

对于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

好吧我知道了,但我怎么能通过我的(数据)对象参数mvc行动方法使用上述代码即httpwebrequest – Raj 2012-07-25 06:28:34

+0

更新我的答案... – Baz1nga 2012-07-25 08:29:29

+0

@ Baz1nga我猜requestWriter.Write()有参数? – 2013-12-26 17:58:54

0

我认为你需要使用的WebClient或HttpWebRequest类调用的操作方法。

0

可以这样做,就像你这样做。但是,大多数Web应用程序都有很多依赖关系,您需要使用框架进行存根或模拟,如Moq

我经常在单元测试库中引用包含我的MVC应用程序的DLL,这等同于您描述。我使用Moq来提供控制器要求的请求上下文和其他依赖关系,例如会话状态,数据库存储库等。

如果使用假依赖关系,则可能是您的控制器操作无用。在这种情况下,我会遵循其他答案的建议。

这是一个大而复杂的话题,在许多关于单元测试asp.net mvc的博客和其他stackoverflow问题上讨论。

+0

他从来没有提到他正在做这个测试.. – Baz1nga 2012-07-25 08:24:41

相关问题