C#如何从控制台应用程序调用MVC Action方法
我正在处理控制台应用程序,它获取一些数据并调用MVC3 Action方法并将获取的数据作为参数传递给该操作方法。 但我的问题是控制台应用程序如何知道数据成功传递\ MVC操作方法正确调用并且服务器上的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 }
请指导我……
谢谢,拉吉
你不能像在这里那样调用MVC动作,桌面应用程序和Web应用程序是无关的。它们作为两个不同的实体存在。现在,如果你需要从桌面应用程序调用mvc动作,就像调用任何其他web使用桌面应用程序的终点,您需要创建HTTPRequest ..
在桌面应用程序中,按如下方式创建HTTPRequest:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://"+ ) request.Method = "GET"; //specify other request properties try { response = (HttpWebResponse)request.GetResponse(); }
如果你想将一些数据传递给你的动作,即动作参数,你可以按如下方式建立你的url:
获取请求
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();
我认为您需要使用WebClient或HttpWebRequest类来调用操作方法。
你可以按照自己的方式做到这一点。 但是,大多数Web应用程序都有许多依赖关系,您需要使用像Moq这样的框架来存根或模拟
我经常在unit testing库中引用包含我的MVC应用程序的DLL,这相当于您描述的场景。 我使用Moq来提供请求上下文和控制器所需的其他依赖项,例如会话状态,数据库存储库等。
如果使用虚假依赖项,则控制器操作可能无效。 在那种情况下,我会听从其他答案的建议。
这是一个大而复杂的主题,并在许多博客和其他有关unit testingasp.net mvc的stackoverflow问题上进行了讨论。