【问题标题】:Publishing .NET Core Web App to Linux on Azure将 .NET Core Web 应用程序发布到 Azure 上的 Linux
【发布时间】:2019-06-10 18:59:43
【问题描述】:

我正在尝试将我的 .Net Core 2.2 Web 应用发布到 Linux 环境。

我已经使用 Linux 的 ServicePlan 创建了 Web 应用程序。我下载了发布配置文件并成功发布。

我通过 FTP 配置文件发布了它。

问题是当我访问web app地址时,仍然显示Azure Empty State web app:

任何想法我缺少什么?

【问题讨论】:

  • 我已经很长时间没有搞砸这个了,但我似乎把 Azure drop 称为新 Azure 站点根目录中的 index.html 文件。也许您需要删除该文件?发布时,是否有删除现有文件的选项?
  • @mason 是的,有一个选项可以做到这一点。我会尽力让你知道。谢谢!
  • @mason 刚刚检查了该选项,行为仍在继续。你还有什么想法吗?

标签: azure asp.net-core .net-core


【解决方案1】:

我尝试重现您的场景并且可以看到相同的行为。

有一种方法可以configure Default documents 用于应用服务,但是,这仅适用于 Windows 上的应用服务,而不适用于 Linux。

对于 Linux 应用,实施将基于所选的运行时堆栈。

对于 .Net Core Razor 页面,AddPageRoute() 方法可以帮助定义路由,如this 博客文章中所述:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().AddRazorPagesOptions(options =>
    {
        //"/Home/welcome" is the page we want to land at
        //The empty string signifies the root URL   

        options.Conventions.AddPageRoute("/Home/welcome", "");
    });

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

也就是说,这仅在本地发布时有效,但在发布到适用于 Linux 的 Azure 应用服务时无效,这不是人们所期望的。

我将与我们的内部团队核实这一点并回复您。感谢您提请我们注意!

更新:

您可以为您的应用服务配置启动命令。对于 .Net Core,它看起来类似于 dotnet <myapp>.dll。这绝对应该有效。您可以在此处配置此设置:

请注意,您可能必须在发布前删除所有现有文件(从您的发布配置文件 > 设置 > 文件发布选项 > 启用“发布前删除所有现有文件”> 保存)才能看到您的更改。

希望这会有所帮助!

【讨论】:

  • 嘿@Bhargavi,非常感谢您对此的回答和帮助。让这个工作对我来说真的很重要!
  • 嘿 Perozzo,我看到这现在可以正常工作,没有任何问题,也就是说,我看到了我配置的登录页面,而不是 Azure 提供的默认页面。你能再试一次看看会发生什么吗?
  • 但是,如果您仍然看到问题,您可以为您的应用服务配置 Startup Command。对于 .Net Core,它看起来类似于 dotnet <myapp>.dll。这绝对应该有效。请注意,您可能必须在发布之前删除所有现有文件才能看到您的更改。希望这会有所帮助!
  • 更新了我上面的答案以包括启动命令解决方法。
  • @perozzo 只是快速检查一下你是否仍然被阻止?
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2021-11-06
  • 2016-08-20
  • 2019-01-05
  • 1970-01-01
  • 2020-05-27
  • 2020-04-12
相关资源
最近更新 更多