#asp.net #angular #internet-explorer #iis
#asp.net #angular #Internet-Explorer #iis
Вопрос:
В настоящее время я разрабатываю приложение в Angular с ASP.NET серверная часть. Я настроил проект для нормальной работы локально в IE11 (обновите полизаполнения, список браузера и добавьте файлы ES5 TsConfig), но когда я опубликовал его на сервере через IIS, страница не загружается и застревает при «Загрузке …»
Чтобы протестировать публикацию, я попытался опубликовать приложение Angular / ASP.NET по умолчанию с теми же результатами.
Консоль отображает четыре ошибки:
SCRIPT1002: Syntax error
runtime.458556a34b891ea32398.js (1,1)
SCRIPT1002: Syntax error
polyfills-es5.7119ad0e4b3aeae98a0b.js (1,1)
SCRIPT1002: Syntax error
polyfills.4efda4a4618e08b621be.js (1,1)
SCRIPT1002: Syntax error
main.59969322f93fb24d6bee.js (1,1)
polyfills.ts
import 'classlist.js';
import 'web-animations-js';
import 'zone.js/dist/zone';
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<defaultDocument enabled="true">
<files>
<add value="ClientApp/dist/index.html" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
Комментарии:
1. Какие-либо ошибки в консоли браузера?
2. @BojanKogoj По какой-то причине я думал, что проверял раньше и не получил ни одной, но да, есть четыре ошибки. Я обновил вопрос, чтобы включить их.
3. Я пытаюсь проверить проблему, создав ASP.NET Основное приложение с Angular, и я просто изменяю
"target": "es5"
его в файле tsconfig.json. После этого я пытаюсь опубликовать сайт в локальной папке и разместить его в IIS, создав новый сайт. На моей стороне это работает нормально. Смотрите здесь . Я предлагаю вам попробовать провести тест, создав новое тестовое приложение, и посмотреть, работает оно или нет. Это может дать некоторый намек на проблему в вашем реальном приложении и помочь сузить проблему.4. @Deepak-MSFT Это должно быть что-то с моим сервером IIS, я пробовал этот подход, и мне не повезло.
5. Устанавливали ли вы .Net Core runtime and Hosting bundle перед размещением сайта в IIS? Если нет, я предлагаю вам загрузить его в соответствии с версией .Net Core вашего сайта по этой ссылке . После его установки попробуйте снова разместить свой сайт и посмотреть, работает он или нет.
Ответ №1:
ваше приложение может выдавать ошибки в IE11, даже если оно нормально работает в других браузерах. Может быть множество причин, по которым ваше приложение Angular не работает, в том числе:
- Отсутствуют полизаполнения
polyfills.ts
. - Использование целевой версии TypeScript, которую IE11 не поддерживает
- Импорт сторонних зависимостей с использованием целевой версии TypeScript, которую IE11 не поддерживает
Обратитесь к этому: https://medium.com/better-programming/how-to-fix-your-angular-app-when-its-not-working-in-ie11-eb24cb6d9920
Комментарии:
1. К сожалению, я уже выполнил все эти шаги, обновил полизаполнения и нацелился на ES5. Приложение отлично работает локально, проблема возникает только тогда, когда оно размещено на сервере IIS.
Ответ №2:
Спасибо @Deepak-MSFT за ответ, оказывается, у меня его не было.Пакет NET Hosting установлен на хост-компьютере. Как только я установил это, веб-сайт отображался так, как и предполагалось, за исключением пары проблем, не связанных с тем, о чем я здесь говорю.
Для тех, кому интересно, у меня возникли проблемы со строкой подключения к базе данных, я нашел другой проект, размещенный на сервере, и изменил его строку подключения: data source=[database];initial catalog=[table];persist security info=True;user id=[user id];password=[password];MultipleActiveResultSets=True;App=EntityFramework
Я также удалил web.config
созданный мной файл, поскольку он, вероятно, будет мешать тому, который был создан во время публикации.