从Windows服务接收数据并将其显示给MVC

时间:2016-01-20 09:08:53

标签: windows http model-view-controller service

我是MVC的新手,我想要一些建议来解决我的问题。

情况: 我有一个返回列表的Windows服务。此Windows服务还会打开一个http连接以共享结果。

我想在MVC应用程序中显示列表。我通过MVC“点击”安装服务的IP和服务器端口连接到Windows服务。

问题 当我运行MVC应用程序时,列表的计数为0。 当我在MVC的代码中放置一个断点,我得到服务的结果时,列表的计数是正确的。

我试图把任务延迟,因为我认为MVC需要一些时间来进行http连接但没有发生任何事情。

两个问题PLZ。

  1. 您认为问题是MVC没有足够的时间进行响应,还是其他问题?

  2. 从Windows服务共享数据或我需要创建Web服务是一种好策略吗?

  3. 提前预订

1 个答案:

答案 0 :(得分:0)

我在显示我的服务的MVC数据列表时遇到了同样的问题。我通过在我的服务中添加selfHosted web API解决了这个问题。我创建了一个API控制器,它以JSON格式返回列表数据。我的代码看起来像这样:

public class ListController : ApiController
{
    // GET api/list
    public List<Object> Get()
    {
        return (myList);
    }
}

然后我called the API from MVC控制器异步:

// Create an HttpClient instance
HttpClient client = new HttpClient();
// add your url 
client.BaseAddress = new Uri("http://localhost:8080/");
//GET the response async from List Controller
HttpResponseMessage response = client.GetAsync("api/list").Result;
if (response.IsSuccessStatusCode)
{
  var JsonList =response.Content.ReadAsStringAsync().Result;
  return View(JsonList);
}

最后,我建议您向API添加授权,并使用SSL以防止将API数据暴露给其他人。