目前我有一个MVC项目和2个WebAPI项目。
是否可以订阅从多个WebAPI项目发布的事件?我有这个设置,但我不确定这种方法是否正确。我只是使用http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc中的示例 - 我实际上没有实现聊天室,只是研究可能的内容。
当发生这种情况时,我似乎也得到了一个404 @ Scripts.Render("〜/ webapib / signalr / hubs)
网址重写规则:
Project - URL - Rewrite Url
WebAPIa - localhost/api - http://localhost:81/{R:1}
WebAPIb - localhost/webapib - http://localhost:82/{R:1}
在_Layout中:
@Scripts.Render("~/Scripts/jQuery/jquery.signalR-2.0.3.js")
@Scripts.Render("~/api/signalr/hubs)
@Scripts.Render("~/webapib/signalr/hubs)
<script type="text/javascript">
$(function () {
// Declare a proxy to reference the hub.
var chat = $.connection.chatHub;
// Create a function that the hub can call to broadcast messages.
chat.client.broadcastMessage = function (name, message) {
// do stuff
};
// define another hub connection here for 2nd WebAPI?
});
</script>
在两个WebAPI项目中,每个项目都有自己的控制器和测试方法:
[HttpGet]
public void PublishTest(int _id)
{
var clients = GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients;
clients.All.broadcastMessage("name", "message");
}
在两个WebAPI项目中,每个项目都有自己的OWIN启动类,如下所示:
[assembly: OwinStartup(typeof(WebAPIa))]
namespace Random.Example.WebAPIa
{
public class Startup
{
public void Configuration(IAppBuilder _app)
{
_app.MapSignalR("/api/signalr", new HubConfiguration());
}
}
}
[assembly: OwinStartup(typeof(WebAPIb))]
namespace Random.Example.WebAPIb
{
public class Startup
{
public void Configuration(IAppBuilder _app)
{
_app.MapSignalR("/signalr", new HubConfiguration());
}
}
}
答案 0 :(得分:0)
我肯定会尝试在js文件中添加第二个连接到第二个服务器。请记住,因为MVC
项目和两个WebAPI
服务器位于不同的端口上,您必须启用CORS
支持(为NuGet
安装CORS
包并在Startup.cs
个文件上启用跨域调用。