В настоящее время я переношу существующее решение на SignalR (для обновления в реальном времени). Унаследованная часть сервера была ASP.NET MVC и теперь является приложением WPF, самостоятельно размещающим SignalR. Я хочу сделать свое решение максимально совместимым с клиентом, но весь существующий код на стороне клиента использует синтаксис Ajax 'post / get' для вызова таких методов сервера:
$.ajax({
url: 'api/Controller/Action',
type: "POST",
success: function (result) { ... },
});
Можно ли каким-либо образом перехватить эти вызовы методов с точки зрения SignalR без добавления подключения к концентратору и / или изменения кода на стороне клиента?
После некоторого обходного пути я нашел решение, поэтому я размещаю его здесь, если ищу решение той же проблемы.
Можно использовать как SignalR SelfHost, так и WebApi SelfHost
в классе Startup.Cs в моем приложении wpf я просто добавляю дополнительный HttpConfiguration в сторону от SignalR.
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// SignalR configuration etc...
}
Затем я создал собственный класс, производный от ApiController, и использовал его как стандартный контроллер MVC.