Azure 没有看到 Index.cshtml

Azure does not see Index.cshtml

我正在尝试在 Azure 服务上发布我的 ASP.NET 核心应用程序。这有效,但是当我尝试使用应用程序功能时,我收到消息

Your App Service app is up and running.

此外,在我的 wwwroot 文件夹中我没有​​任何 .html 文件。我只有一个 Index.cshtml 文件,它位于我的应用程序的 Views/Home 文件夹中,所有其他文件是 .css.js

当我在调试模式下 运行 Visual Studio 中的应用程序时,立即在浏览器中打开从 Index.cshtml 生成的页面。但应用程序在 Azure 中发布后,就不会发生这种情况。

我怎样才能让 Azure 看到 Index.cshtml

我发现了问题所在。有两种类型的应用程序,如下图所示:Web 应用程序和 Web 应用程序 MVC。我使用了第二种类型的应用程序。当我选择第一个类型并发布应用程序时,Azure 立即找到了所需的index.html。我只需要选择 Web 应用程序。

但为什么它不适用于第二种类型的应用程序(Web Apllication MVC)?我还是不知道这个问题的答案。

您是否在您的网络包中找到 index.cshtml?如果你在最终的 web 包中得到 index.cshtml,你可能需要将 index.cshtml 文件类型添加到以下 in..

..YourAzureWebApp --> 应用程序设置 --> 默认文档

据我所知,默认路由将添加到 Startup.cs 文件的 Configure 方法中,如下所示:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

我还创建了我的 .Net Core 2.0 MVC 应用程序来检查这个问题,它可以在本地端和我的 azure web 应用程序上按预期工作。

Moreover, in my wwwroot folder I don't have any .html files.

Web 应用程序和 Web 应用程序 MVC 下的视图将被编译成 {your-webapplication-assemblyname}.PrecompiledViews.dll,您可以利用 ILSpy 检查您的 DLL。

对于您的问题,我建议您通过 KUDU 清除网络应用程序中的网络内容,或者修改发布设置并选择 删除目标位置的其他文件在“文件发布选项”下,然后将您的应用程序重新部署到 Azure Web App 以缩小此问题的范围。

我这边花了 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 上使用了:)