Так что я ценю, что это будет очень непонятная проблема, но я нигде не смог найти ответ.Я использую .Net Core 2.2 и React (проект Visual Studio по умолчанию) и собираю проект в Docker-контейнере Linux и использую nginx в качестве шлюза, однако у меня возникла проблема в разработке, когда не работает горячая перезагрузка, насколько я могу судить по этомуэто потому, что веб-сокеты, которые он должен использовать, не маршрутизируются должным образом.Трек стека, который я получаю, находится ниже.Я также строю множество других проектов, поэтому ошибки могут быть не только для веб-проекта, в основном я не думаю, что исключения SQL имеют какое-либо отношение к веб-проекту.
[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.SpaServices[0]
> PROJECT.Web@0.1.0 start /app/ClientApp
> rimraf ./build && react-scripts start
Starting the development server...
Microsoft.AspNetCore.SpaServices:Information: > PROJECT.Web@0.1.0 start /app/ClientApp
> rimraf ./build && react-scripts start
Starting the development server...
Exception thrown: 'System.Data.SqlClient.SqlException' in Microsoft.EntityFrameworkCore.SqlServer.dll
The thread 66 has exited with code 0 (0x0).
The thread 0x42 has exited with code 0 (0x0).
The thread 65 has exited with code 0 (0x0).
The thread 0x41 has exited with code 0 (0x0).
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in Microsoft.EntityFrameworkCore.Relational.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in Microsoft.EntityFrameworkCore.SqlServer.dll
The thread 76 has exited with code 0 (0x0).
The thread 0x4c has exited with code 0 (0x0).
[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.SpaServices[0]
Files successfully emitted, waiting for typecheck results...
Microsoft.AspNetCore.SpaServices:Information:
Files successfully emitted, waiting for typecheck results...
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
The thread 99 has exited with code 0 (0x0).
The thread 0x63 has exited with code 0 (0x0).
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
The thread 107 has exited with code 0 (0x0).
The thread 0x6b has exited with code 0 (0x0).
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
The thread 60 has exited with code 0 (0x0).
The thread 0x3c has exited with code 0 (0x0).
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.SpaServices[0]
Compiled successfully!
Microsoft.AspNetCore.SpaServices:Information: Compiled successfully!
Exception thrown: 'System.Net.Internals.SocketExceptionFactory.ExtendedSocketException' in System.Net.NameResolution.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in Microsoft.EntityFrameworkCore.Relational.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in Microsoft.EntityFrameworkCore.SqlServer.dll
Exception thrown: 'System.Data.SqlClient.SqlException' in Polly.dll
Хотя это и неполное представление о стеке дает основную идею ... Я полагаю, что это должно быть связано с запросом websocket, который выполняется за кулисами sock-js
Изначально возникла ошибка до тех пор, пока я не добавил нижеприведенное в свой файл конфигурации nginx
location /sockjs-node {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_buffering off;
# Fix the “It appears that your reverse proxy set up is broken" error.
proxy_pass http://portal/sockjs-node;
proxy_redirect off;
proxy_read_timeout 90;
}
, который дает ответ, видимый на изображении devtools, однако горячая перезагрузка не работает.Однажды я нашел исправление для отдельной маршрутизации запросов ws с помощью приведенного ниже в конфигурации
location /sockjs-node {
try_files /nonexistent @$http_upgrade;
}
location @websocket {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_buffering off;
# Fix the “It appears that your reverse proxy set up is broken" error.
proxy_pass http://portal/sockjs-node;
proxy_redirect off;
proxy_read_timeout 90;
}
location @ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Fix the “It appears that your reverse proxy set up is broken" error.
proxy_pass http://portal/sockjs-node;
proxy_redirect off;
proxy_read_timeout 90;
}
Однако через это я получаю ошибку [emerg] 1#1: "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /etc/nginx/nginx.conf:151
- единственное решение, которое я нашел, этоудалите висящий /
из URL proxy_pass
, которого у него нет.
Короче говоря, я полностью застрял, кто-нибудь знает, что это за проблема, или может указать мне правильное направление??Дайте мне знать, если вам нужна дополнительная информация.
РЕДАКТИРОВАТЬ: наиболее заметными являются эти исключения, которые продолжают появляться, когда я действительно захожу на веб-страницу в браузере
Exception thrown: 'System.Net.Sockets.SocketException' in Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll
Exception thrown: 'System.IO.DirectoryNotFoundException' in System.Private.CoreLib.dll