【问题标题】:Azure does not see Index.cshtmlAzure 看不到 Index.cshtml
【发布时间】:2019-01-07 01:54:05
【问题描述】:

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

您的应用服务应用已启动并正在运行。

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

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

我该怎么做才能让 Azure 看到 Index.cshtml

【问题讨论】:

  • Azure 或 ASP.NET Core 没有任何问题。支持动态和静态文件。模板使用多年。发布您的路由、配置

标签: azure web asp.net-core azure-web-app-service deploying


【解决方案1】:

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

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

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

此外,在我的 wwwroot 文件夹中,我没有任何 .html 文件。

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

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

【讨论】:

  • 很好的解释,谢谢。我真的没有正确配置生根。对不起,我犯了愚蠢的错误!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这根本不是问题。 Static files work with both templates - 两个模板都使用 same 堆栈、ASP.NET Core,但配置不同。在每种情况下,您将静态文件放在哪里?你的配置、路由是什么样的?
    • 感谢您的评论。你是对的。显然,我没有正确设置路由或忘记了我对其进行了一些更改。
    【解决方案4】:

    2 美分,因为我只是坚持了一段时间。

    问题是昨天我一直在尝试部署到 Ubunut / Ngnix,而今天我决定尝试 Azure。

    但是我忘记在我的 Startup 中注释(禁用)以下行:

    //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 上运行 :)

    【讨论】:

      猜你喜欢
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 2020-05-24
      • 1970-01-01
      相关资源
      最近更新 更多