Azure не видит Index.cshtml

Я пытаюсь опубликовать свое приложение 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?

Нет ничего плохого в Azure или ASP.NET Core. Поддерживаются как динамические, так и статические файлы. Шаблоны используются годами. Разместите свою маршрутизацию, конфигурацию

Panagiotis Kanavos 28.05.2018 12:44
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
1 172
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я выяснил, в чем проблема. Существует два типа приложений, как показано на рисунке ниже: веб-приложение и веб-приложение MVC. Я работал со вторым типом приложений. Когда я выбрал первый тип и опубликовал приложение, Azure сразу же нашла требуемый index.html. Мне просто нужно было выбрать веб-приложение.

Но почему он не работает со вторым типом приложений (Web Apllication MVC)? Я до сих пор не знаю ответа на этот вопрос.

Это совсем не проблема. Статические файлы работают с обоими шаблонами - оба шаблона используют стек одно и тоже, ASP.NET Core, с разными конфигурациями. Куда вы поместили свои статические файлы в каждом случае? Как выглядит ваша конфигурация, маршрутизация?

Panagiotis Kanavos 28.05.2018 12:40

Спасибо за ваш комментарий. Ты прав. Я, видимо, неправильно выставил маршрутизацию или забыл, что внес в нее какие-то изменения.

deralbert 28.05.2018 23:06

Вы нашли index.cshtml в своем веб-пакете? В случае, если вы получите index.cshtml в своем окончательном веб-пакете, вам может потребоваться добавить тип файла index.cshtml к следующему в ..

..YourAzureWebApp -> Настройки приложения -> Документы по умолчанию

Ответ принят как подходящий

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, чтобы сузить эту проблему.

Хорошее объяснение, спасибо. Я действительно неправильно настроил маршрутизацию. Простите за глупую ошибку с моей стороны!

deralbert 28.05.2018 23:09

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 :)

Другие вопросы по теме