Недавно я только начал учиться на SignalR, и я тестировал один проект , который я нашел на GitHub.Тем не менее, я застрял, когда пытался разместить данные в части веб-API.
Я только что все сделал, но я не могу заставить этот проект как-то работать.Это в основном программа для проекта.Это консольное приложение, которое отправляет данные (Json) в Web Api
// Get the stuff we need to send
GetMetrics(out cpuTime, out memUsage, out totalMemory);
// Send the data
var postData = new
{
MachineName = System.Environment.MachineName,
Processor = cpuTime,
MemUsage = memUsage,
TotalMemory = totalMemory
};
var json = JsonConvert.SerializeObject(postData);
// Post the data to the server http://localhost:80/api/cpuinfo
var serverUrl = new Uri(ConfigurationManager.AppSettings["ServerUrl"]);
var client = new WebClient();
client.Headers.Add("Content-Type", "application/json");
client.UploadString(serverUrl, json);
Перемещение в веб-часть.У меня был Asp.net MVC и я создал RouteConfig внутри App_Start для маршрутизации HTTP-запроса к контроллеру.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
И это класс контроллера.
public class CpuInfoController : ApiController
{
public void Post(CpuInfoPostData cpuInfo)
{
var context = GlobalHost.ConnectionManager.GetHubContext<CpuInfo>();
context.Clients.All.cpuInfoMessage(cpuInfo.MachineName, cpuInfo.Processor, cpuInfo.MemUsage, cpuInfo.TotalMemory);
}
}
Я такжезарегистрировал его в Global.asax, как показано ниже
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
После того, как все это сделано, я все еще не могу это сделать, и мое консольное приложение выдает некоторые ошибки, как на изображении здесь .Похоже, api / cpuinfo не был найден.
Пожалуйста, сообщите мне, если я что-то здесь не так сделал.Полную версию этого проекта можно найти здесь .