创建控制台应用程序客户端以访问控制器操作ASP.NET MVC 5

时间:2017-04-14 14:36:59

标签: c# asp.net asp.net-mvc web asp.net-mvc-5

我是Web开发和ASP.Net MVC-5项目的新手,我已经制作了一个接受get请求的Action。我想在控制台桌面应用程序上点击我的控制器的动作。以下是我的新手尝试。请指导我。

在我的控制器中,我添加了以下操作

 public class SecurityController : BaseController
    {
        [HttpGet]
        public ActionResult CacheClear(TestMV viewModel)
        {
            // SOME CODE
            return View();
        }
}

我的TestMV

public class TestMV
{
    public int locationId { get; set; }
}

现在,当我进入浏览器并输入 http://localhost:5271/Security/CacheClear/?locationId=28463 时,我可以点击断点,我可以捕获该值。

问题1:  是吗?或者我需要为我的控制台应用程序做一些花哨的东西来实现这个Action方法。我是否需要创建一些Web API或其他东西。或者上面的代码可以正常工作吗?

问题2:如何通过桌面应用访问Controller操作。

我用Google搜索了下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
            client.BaseAddress = new Uri("http://localhost:5271/");
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            var resp2 = await client.GetAsync("Security/CacheClear/?locationId=28463");
            resp2.EnsureSuccessStatusCode();
        }
    }
}

如果我朝着正确的方向前进,有人可以指导我。我需要在代码中进行哪些更改才能获得结果。另外,我在await client.GetAsync附近变得波浪起伏。 “await方法只能在同步方法中使用。请帮帮我。

1 个答案:

答案 0 :(得分:0)

MVC控制器具有MVC Web应用程序的定义行为。我认为你需要的是创建一个ASP.NET Web Api项目,它使用扩展的控制器继承基类ApiController,并允许你做比常规MVC应用程序控制器更多的工作。两个有用的链接:

ASP.NET Web Api入门

https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

从.NET客户端调用Web Api

https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client

希望它有所帮助!