【问题标题】:Publish .NETCore 2 API and host on IIS发布 .NET Core 2 API 并在 IIS 上托管
【发布时间】:2018-02-17 04:34:55
【问题描述】:

我创建了一个 .net Core 2 API 并将其发布到服务器。

与普通的 .Net MVC 结构相比,文件结构看起来很奇怪

我熟悉的正常结构

这是已部署的 .NET CORE 2 API 的结构

现在,如果我只是尝试将该文件夹转换为像普通 ASP.NET 应用程序这样的应用程序,它就不起作用。

我已经在服务器上安装了the .NET Core Windows Server Hosting bundle,但我仍然缺少一些东西。

您在哪里添加此代码以启用 IISIntegration?

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();

【问题讨论】:

标签: asp.net iis model-view-controller asp.net-core-2.0


【解决方案1】:

该代码在 Program.cs 中,但它是默认的,所以你应该已经没问题了。

ASP.NET Core 文件结构与 MVC 5 不同,但在安装 .NET Core Hosting Runtime 后,它们的工作原理几乎相同。您将发布的文件放在 Web 服务器上的目录中。然后,您在 IIS 中设置一个站点以使用该目录。唯一略有不同的是您需要编辑应用程序池并将其设置为“无托管代码”,而不是特定的 .NET 运行时。除此之外,它应该都能正常工作。

也就是说,如果您的屏幕截图是文件的完整列表,那么您似乎确实遗漏了一些内容。发布过程可能在某个时候失败。尝试重新发布。

背景

ASP.NET Core 的工作方式与以前的 ASP.NET Web 应用程序完全不同。过去,所有 HTTP 模块等都来自安装在机器上的单一 .NET 运行时,而 ASP.NET Core 应用程序是完全独立的。 Core 应用程序实际上只是一个控制台应用程序。在 IIS 设置中,实际的 Web 服务器是 Kestrel,它可以捆绑到 Core 应用程序中,也可以从 .NET Core 运行时获得。 IIS 用作反向代理。将请求传递给 Kestrel,然后返回从 Kestrel 获得的响应(因此称为“无托管代码”)。通过 IIS 部署,您的应用程序是一个 DLL,但它也可以完全独立并部署为可执行文件。关键是,是的,文件结构等非常不同,因为它从根本上以不同的方式工作。

【讨论】:

  • 我可以在构建项目时让它自动发布吗?这样我就可以在构建项目时看到发布的最新更改?
  • 不是来自 Visual Studio,但您所描述的称为自动发布。有许多第三方应用程序可以处理这个问题。最多产的两个是 Octopus Deploy 和 VSTS。
  • 一般来说,您提交您的源代码,然后它将启动一个自动构建。构建完成后,然后将工件部署到它们应该去的地方。但是,您必须设置所有这些,在您选择的任何自动化解决方案中使用构建/部署脚本。
  • 其实我正在寻找一种解决方案,我们通常通过将其配置为本地 IIS 来使用 ASP.NET 4 应用程序。
猜你喜欢
  • 2019-07-09
  • 2020-03-09
  • 2018-09-22
  • 1970-01-01
  • 2019-03-18
  • 2018-08-14
  • 2021-07-18
  • 2021-09-25
  • 1970-01-01
相关资源
最近更新 更多