Ошибка HTTP 400 при запуске приложения ASP.NET Core 2.1 React

Я разрабатываю приложение ASP.NET Core 2.1 React в Visual Studio 2017. Сегодня я хотел запустить ранее запускаемое приложение из Visual Studio, но появилась ошибка:

Неверный запрос — неверное имя хоста. Ошибка HTTP 400. Недопустимое имя хоста запроса.

После того, как я переключился с IIS Express на исполняемый файл проекта в меню запуска в VS 2017, я увидел следующее сообщение:

Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]

Хост «localhost: 5001» не соответствует разрешенному хосту.

Весь лог выглядит так:

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\vdohnal\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
info: Microsoft.AspNetCore.SpaServices[0]
      Starting create-react-app server on port 50222...
Hosting environment: Development
Content root path: C:\VSTS\Dixie\Dixie
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
dbug: HttpsConnectionAdapter[1]
      Failed to authenticate HTTPS connection.
System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
   at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.SslStream.BeginAuthenticateAsServer(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken, AsyncCallback asyncCallback, Object asyncState)
   at System.Net.Security.SslStream.<>c.<AuthenticateAsServerAsync>b__51_0(SslServerAuthenticationOptions arg1, CancellationToken arg2, AsyncCallback callback, Object state)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state)
   at System.Net.Security.SslStream.AuthenticateAsServerAsync(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionAdapter.InnerOnConnectionAsync(ConnectionAdapterContext context)
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET https://localhost:5001/
info: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]
      The host 'localhost:5001' does not match an allowed host.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 55.2128ms 400 text/html
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET https://localhost:5001/favicon.ico
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET https://localhost:5001/favicon.ico
info: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]
      The host 'localhost:5001' does not match an allowed host.
info: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]
      The host 'localhost:5001' does not match an allowed host.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 6.4203ms 400 text/html
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 8.9463ms 400 text/html
info: Microsoft.AspNetCore.SpaServices[0]
      > [email protected] start C:\VSTS\Dixie\Dixie\ClientApp
> rimraf ./build && react-scripts start

Starting the development server...

info: Microsoft.AspNetCore.SpaServices[0]

Compiled with warnings.

info: Microsoft.AspNetCore.SpaServices[0]

./src/components/Home.js

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET https://localhost:5001/
info: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]
      The host 'localhost:5001' does not match an allowed host.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 3.6957ms 400 text/html
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET https://localhost:5001/
info: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]
      The host 'localhost:5001' does not match an allowed host.

Любые идеи, что позади и как это исправить?

Я с подозрением отношусь к тому, что антивирус AVG в последнее время делает большие обломки или какие-то обновления.


person Vojtěch Dohnal    schedule 06.09.2018    source источник


Ответы (3)


Ой, я на днях поигрался с настройками AllowedHosts и забыл об этом. В файле appsetings.json есть строка, которую следует читать для localhost:

"AllowedHosts": "локальный хост"

Действительный IP-адрес локахоста не работает.

person Vojtěch Dohnal    schedule 10.09.2018
comment
Вы сэкономили кучу моих нервов этим ответом! =) Большое спасибо! - person Konstantin; 09.01.2019

Я исправил эту проблему, добавив это в файл launchSettings.json.

"ShutdownTimer.Server": {
  "commandName": "Project",
  "launchBrowser": true,
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},
"ShutdownTimer.Server (localIP)": {
    "commandName": "Project",
    "launchBrowser": true,
    "applicationUrl": "https://192.168.0.115:5001;http://192.168.0.115:5000",
    "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
    }
}

Похоже, вам нужно привязаться к сетевому IP-адресу, чтобы иметь возможность подключаться к этому IP-адресу без ошибок подключения. по крайней мере, я могу связаться с этим IP-адресом без переадресации портов с моего телефона после запуска сервера таким образом.

person Dbl    schedule 09.09.2019

Столкнулся с этим сегодня. Открыл файл appsettings.json, чтобы добавить строку "AllowedHost": "localhost", но обнаружил, что у меня уже есть запись с

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET https://localhost:5001/
info: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[0]
      The host 'localhost:5001' does not match an allowed host.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 2951.4396ms 400 text/html

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET https://localhost:5001/
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'AsyncControllerTest.Controllers.HomeController.Index (AsyncControllerTest)'

Просто дай другим, вроде меня, понять, что ты не сумасшедший. :-)

person Jeffrey LeCours    schedule 30.03.2020