Передача данных в SignalR Hub с использованием метода Post в Web Api вернулась: удаленный сервер возвратил ошибку: (404) Not Found - PullRequest
0 голосов
/ 17 июня 2019

Недавно я только начал учиться на 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 не был найден.

Пожалуйста, сообщите мне, если я что-то здесь не так сделал.Полную версию этого проекта можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...