Пустельга на винде нет ответа - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть собственный проект mvc, использующий Kestrel в качестве http-сервера.На некоторых машинах, начиная от Windows Server 2016 до Windows 10, по какой-то причине не получен ответ при попытке доступа к приложению через http.Браузер просто зависает в ожидании адреса сервера .Как я уже сказал, это произошло только на 1% установок, но мне нужно это выяснить.Я попытался довести свою конфигурацию до минимума, насколько это возможно, и все еще не получил ответ от сервера, консольный регистратор также не показывает записей, как будто ничего не происходит, поэтому нет ошибок или указаний на то, что что-то идет не так при запуске или при выполнении запросов.

Вот мой код WebHostBuilder

       var hostBuilder = new WebHostBuilder()
                    .UseStartup<WebStartup>()
                    .UseKestrel(kestrelOptions =>
                    {
                        //listen on configured web port
                        kestrelOptions.ListenAnyIP(WEB_PORT, options=>
                        {
                        });

                        if (HTTPS_ENABLE)
                        {
                            kestrelOptions.Listen(IPAddress.Any, HTTPS_PORT, listenOpt =>
                            {
                                if (string.IsNullOrWhiteSpace(HTTPS_PFX_FILE) || !File.Exists(HTTPS_PFX_FILE))
                                {
                                    TraceInitMessage($"PFX file not found.");
                                }
                                else if (string.IsNullOrWhiteSpace(HTTPS_PFX_PASSWORD))
                                {
                                    TraceInitMessage($"PFX file password is invalid.");
                                }
                                else
                                {
                                    listenOpt.UseHttps(HTTPS_PFX_FILE, HTTPS_PFX_PASSWORD, httpsOptions =>
                                    {
                                        httpsOptions.SslProtocols = System.Security.Authentication.SslProtocols.Default;
                                    });
                                }
                            });
                        }
                    });

Если я проверяю процесс, я вижу, что есть прослушивающее соединение, и как только браузер подключается, существует установленное соединение, если закрытое окно браузера переходит в закрытое ожиданиесостояние.

Так есть ли какой-нибудь способ, которым я могу выяснить, в каком месте, где проблема начинается во всем конвейере?

1 Ответ

0 голосов
/ 15 ноября 2018

Итак, проблема в том, что некоторые из зависимых библиотек не имели перенаправлений привязки сборки.Добавление следующей конфигурации решило проблему

      <dependentAssembly>
    <assemblyIdentity name="System.Threading.Overlapped" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-0.0.0.0" newVersion="4.1.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Sockets" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-0.0.0.0" newVersion="4.2.0.0" />
  </dependentAssembly>
...