Я размещаю Web API и клиента SignalR в службе Windows.Любой код после WebApp.Start выполняется дважды.Также запросы к веб-API также принимаются дважды.Ниже приведен мой пример кода, в этом TestSignalRService: 3 и следы в конфигурации печатаются дважды.Мой App.config также довольно прост и не имеет никаких настроек.
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
IDisposable SignalR;
HttpSelfHostServer server;
protected override void OnStart(string[] args)
{
Start();
}
protected override void OnStop()
{
server.CloseAsync();
SignalR.Dispose();
}
public void Start()
{
Trace.WriteLine("TestSignalRService:1");
var config = new HttpSelfHostConfiguration("http://localhost:9090");
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
Trace.WriteLine("TestSignalRService:2");
string url = "http://*:9191/";
try
{
SignalR = WebApp.Start<TestStart>("http://*:9191/");
Trace.WriteLine("TestSignalRService:3");
}
catch (Exception e)
{
Trace.WriteLine("TestSignalRService::Exception in starting Signal R " + e.Message);
}
}
}
class TestStart
{
public void Configuration(IAppBuilder app)
{
Trace.WriteLine("TestSignalRService::Startup configuration");
Trace.WriteLine("TestSignalRService::Startup configuration 1");
app.Map("/signalr", map =>
{
//map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{ EnableDetailedErrors = true
};
map.RunSignalR(hubConfiguration);
});
Trace.WriteLine("TestSignalRService::Startup configuration 3");
}
}
Мой сервис не перезапускается, так как следы над WebApp.Start не печатаются дважды.Все, что находится после вызова WebApp.Start, выполняется дважды.Что может быть причиной этого и как это исправить?Пожалуйста, помогите, я впервые использую собственный хост OWIN.