我是MVC的新手,我想要一些建议来解决我的问题。
情况: 我有一个返回列表的Windows服务。此Windows服务还会打开一个http连接以共享结果。
我想在MVC应用程序中显示列表。我通过MVC“点击”安装服务的IP和服务器端口连接到Windows服务。
问题 当我运行MVC应用程序时,列表的计数为0。 当我在MVC的代码中放置一个断点,我得到服务的结果时,列表的计数是正确的。
我试图把任务延迟,因为我认为MVC需要一些时间来进行http连接但没有发生任何事情。
两个问题PLZ。
您认为问题是MVC没有足够的时间进行响应,还是其他问题?
从Windows服务共享数据或我需要创建Web服务是一种好策略吗?
提前预订
答案 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数据暴露给其他人。