WebApp.Start () дважды вызывает конфигурацию запуска - PullRequest
0 голосов
/ 10 октября 2018

Я размещаю 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.

1 Ответ

0 голосов
/ 04 июля 2019

Закон «жаловаться незнакомцу - и немедленно найти ответ» работает для меня: 3

public void Configure()
{
    // code here executes once per application starts

    app.Run(async context => 
    {
        // code here executes once per http request
    });
}

Мое веб-приложение запускается дважды из-за запросов по умолчанию из браузера «/» и «/»favicon.png '.

Спасибо juunas ответ за подсказку)

...