我目前正在将现有解决方案迁移到SignalR(用于实时更新)。传统服务器端是ASP.NET MVC,现在是WPF应用程序自托管SignalR。我想使我的解决方案尽可能地向后兼容于客户端,但是所有现有的客户端代码都使用Ajax的“ post / get”语法来调用这样的服务器方法:
$.ajax({
url: 'api/Controller/Action',
type: "POST",
success: function (result) { ... },
});
是否可以通过任何方式从SignalR角度拦截这些方法调用,而无需添加集线器连接和/或更改客户端代码?
答案 0 :(得分:0)
一些解决方法后,我找到了一个解决方案,所以如果要寻找相同类型的问题的解决方案,请在此处发布。
可以同时使用SignalR SelfHost和WebApi SelfHost
在我的wpf应用程序的Startup.Cs类中,我只是将多余的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控制器一样使用。