Я пытаюсь опубликовать свое приложение ASP.NET Core в службе Azure. Это работает, но когда я пытаюсь использовать функции приложения, я получаю сообщение
Your App Service app is up and running.
Более того, у меня в папке wwwroot нет файлов .html. У меня есть только файл Index.cshtml, который находится в папке Views/Home в моем приложении, все остальные файлы - это .css, .js и т. д.
Когда я запускаю приложение в Visual Studio в режиме отладки, в браузере сразу открывается страница, созданная из Index.cshtml. Но после публикации приложения в Azure этого не происходит.
Что я могу сделать, чтобы Azure увидела Index.cshtml?


Я выяснил, в чем проблема. Существует два типа приложений, как показано на рисунке ниже: веб-приложение и веб-приложение MVC. Я работал со вторым типом приложений. Когда я выбрал первый тип и опубликовал приложение, Azure сразу же нашла требуемый index.html. Мне просто нужно было выбрать веб-приложение.
Но почему он не работает со вторым типом приложений (Web Apllication MVC)? Я до сих пор не знаю ответа на этот вопрос.
Это совсем не проблема. Статические файлы работают с обоими шаблонами - оба шаблона используют стек одно и тоже, ASP.NET Core, с разными конфигурациями. Куда вы поместили свои статические файлы в каждом случае? Как выглядит ваша конфигурация, маршрутизация?
Спасибо за ваш комментарий. Ты прав. Я, видимо, неправильно выставил маршрутизацию или забыл, что внес в нее какие-то изменения.
AFAIK, маршрут по умолчанию будет добавлен к методу Configure вашего файла Startup.cs следующим образом:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Я также создал свое приложение MVC .Net Core 2.0, чтобы проверить эту проблему, оно может работать должным образом на локальной стороне и в моем веб-приложении Azure.
Moreover, in my wwwroot folder I don't have any .html files.
Представления в рамках веб-приложений и веб-приложений MVC будут скомпилированы в {your-webapplication-assemblyname}.PrecompiledViews.dll, вы можете использовать ILSpy для проверки своих DLL.
Что касается вашей проблемы, я бы порекомендовал вам очистить веб-контент в своем веб-приложении с помощью КУДУ или изменить параметры публикации и выбрать Удалить дополнительные файлы в месте назначения в разделе Параметры публикации файлов, а затем повторно развернуть приложение в веб-приложении Azure, чтобы сузить эту проблему.
Хорошее объяснение, спасибо. Я действительно неправильно настроил маршрутизацию. Простите за глупую ошибку с моей стороны!
2 цента с моей стороны, так как я просто застрял на этом некоторое время.
Проблема заключалась в том, что вчера я играл с развертыванием в Ubunut / Ngnix, а сегодня решил попробовать Azure.
НО я забыл прокомментировать (отключить) следующие строки в моем автозагрузке:
//for nginx server
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
и это стоило мне почти полдня, чтобы найти проблему.
Еще я ставил маршрутизацию следующим образом
app.UseStatusCodePages();
app.UseAuthentication();
app.UseMvc(routes => {
routes.MapRoute(
name: "default",
template: "{controller=Pages}/{action=Index}");
});
Теперь похоже, что это работает в Azure :)
Нет ничего плохого в Azure или ASP.NET Core. Поддерживаются как динамические, так и статические файлы. Шаблоны используются годами. Разместите свою маршрутизацию, конфигурацию