7

我正在开发控制台应用程序,它获取一些数据并调用 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               
}

请指导我...

谢谢,拉吉

4

3 回答 3

10

您不能像在此处所做的那样调用 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();
}

如果您想将一些数据传递给您的操作,即操作参数,您可以按如下方式构建您的网址:

获取请求

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

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();
于 2012-07-25T05:57:53.633 回答
0

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

于 2012-07-25T05:59:24.277 回答
0

可以按照您的方式进行操作。但是,大多数 Web 应用程序都有很多依赖项,您需要使用像Moq这样的框架来存根或模拟这些依赖项

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

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

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

于 2012-07-25T06:12:05.570 回答