Я думаю, что немного концептуальных знаний здесь было бы полезно. Visual Studio имеет эту предварительно упакованную вещь Angular, которая (на мой взгляд) настроена довольно неуклюже и обманчиво, так что почти наверняка не будет работать правильно.
Угловые приложения - это одностраничные приложения. Вы создаете их в соответствии с процессом, задокументированным на Angular Site , используя Angular CLI , чтобы помочь вам в этом процессе. Когда вы создаете свое приложение в режиме разработки, оно попытается подключиться к серверу веб-пакетов, чтобы получать уведомления об обновлениях (таким образом, когда вы используете ng serve
, оно автоматически перекомпилирует и обновит страницу). Эта функция отсутствует в производственной сборке (ng build --prod
).
Обслуживание углового приложения
По сути, проект ASP.Net бесполезен в том, что касается самого приложения Angular. Когда вы компилируете код Angular, команда ng build
запускает веб-пакет, среди других процессов, производя несколько .css
, .js
и одну страницу index.html
, которая отображает ваше приложение (имя страницы может быть сконфигурирован). Любой веб-сервер, способный обслуживать статические файлы, может обслуживать index.html
и, следовательно, запускать ваше приложение.
Однако большинству Angular-приложений необходим какой-то бэкэнд. Вот где может пригодиться основное приложение .NET. Вы должны перезвонить на ваш основной сервер .NET с внешнего интерфейса Angular, используя HttpClient
.
У меня есть приложение Angular, работающее с ядром .Net как в рабочей, так и в тестовой конфигурации. Для производства у меня есть следующее:
- Обычный сайт, настроенный в IIS с возможностью обслуживания статических файлов (для приложения Angular)
- Виртуальный каталог
/api
, в котором размещена упакованная / опубликованная версия основного API-проекта ASP.Net. Обратите внимание, что этот проект не имеет жесткой связи с приложением Angular
- Мы разделили код определения объекта между двумя проектами - я создал генератор кода, который создает Typescript для приложения Angular и C # для серверной части на основе NJsonSchema .
Для тестирования / разработки я настроил прокси-конфигурацию для сервера веб-пакетов. Таким образом, нажатие кнопки «Выполнить» в VisualStudio запускает прослушивание проекта API на localhost:5800
, а команда ng serve
запускает сервер Angular Webpack на localhost:4200
. Запросы на localhost:4200/api
передаются на localhost:5800
.