Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何从控制台应用程序调用MVC操作方法_C#_Asp.net Mvc - Fatal编程技术网

C#如何从控制台应用程序调用MVC操作方法

C#如何从控制台应用程序调用MVC操作方法,c#,asp.net-mvc,C#,Asp.net Mvc,我正在开发控制台应用程序,它获取一些数据并调用MVC3操作方法,并将获取的数据作为参数传递给该操作方法。 但我的问题是控制台应用程序如何知道数据成功通过\MVC操作方法调用,以及服务器上的MVC应用程序是否正在运行 这是我的密码: public static void Main() { // Mvc application object intialization HomeController object_Mail = new HomeController();

我正在开发控制台应用程序,它获取一些数据并调用MVC3操作方法,并将获取的数据作为参数传递给该操作方法。 但我的问题是控制台应用程序如何知道数据成功通过\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               
}
请引导我

谢谢,
Raj

您不能像这里那样调用MVC操作,桌面应用程序和web应用程序是不相关的。。它们作为两个不同的实体存在。。现在,如果您需要从桌面应用程序调用mvc操作,就像使用桌面应用程序调用任何其他web端点一样,您需要创建一个HTTPRequest

在桌面应用程序中,按如下方式创建HTTPRequest:

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

try
{
    response = (HttpWebResponse)request.GetResponse();
}
对于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应用程序都有很多依赖项,您需要使用诸如

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

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


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

好的,我知道了,但是如何使用上面的代码ie将我的(数据)对象参数传递给mvc操作方法httpwebrequest@Baz1nga我想是个作家有参数吗?@BhushanFirake下次我会确保编译代码,确保它正在运行,并有一个示例应用程序。我相信,答案仍然没有更新。从不使用数据变量。它应该是requestWriter.Write(数据)
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();