【发布时间】:2015-11-09 02:52:12
【问题描述】:
我有 SignalR 服务器作为类库项目,我在控制台应用程序中引用了它(模拟 Windows 服务)
这是 SignalR 的代码
public void Start()
{
try
{
string url = @"http://*:8081";
using (WebApp.Start<Startup>(url))
{
Logger.Info(string.Format("Server running at {0}", url));
}
}
catch (Exception ex)
{
Logger.Exception(ex, "Signalr start");
}
Run = true;
Logger.Info("Starting Worker");
workerThread = new Thread(() =>
{
Worker();
});
workerThread.Start();
}
这里是启动类
public class Startup
{
Microsoft.AspNet.SignalR.HubConfiguration hubconfiguration = null;
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
hubconfiguration = new HubConfiguration();
hubconfiguration.EnableDetailedErrors = true;
app.MapSignalR(hubconfiguration);
}
}
所以,它在一个线程中,而 worker 在另一个线程中。这似乎很好,因为我在其他可以工作的项目中做到了。工作线程没有问题,它只是一个空循环,与服务器没有任何关系。
问题是服务器似乎“停止”了——当我查看 Netstat 时,没有人在监听 8081 端口。没有例外,它只是默默地失败了。
我在实际运行此服务器的控制台项目中引用了 Owin.Cors(和 Owin.Host.HttpListener),但正如我所说,服务器只是停止了。
当我尝试连接时,客户端说“连接主动被拒绝”,而 Putty (telnet) 也说“无法连接”。
问题出在哪里?简而言之,我有带有 SignalR 服务器的类库,该类库在运行它的控制台项目中引用,但服务器无法正常工作。
[编辑]
还有启动服务的控制台应用代码
static void Main(string[] args)
{
ServiceEngine Engine = new ServiceEngine();
Engine.Start();
Console.ReadKey();
Engine.Stop();
}
附:对不起我的英语不好。
【问题讨论】: