繁体   English   中英

.NET 核心 3 API,在 Mac 上使用 Visual Studio Code 开发:如何在 IIS 上部署和配置?

[英].NET core 3 API, develop on Mac with Visual Studio Code: how deploy and configure on IIS?

我在 Mac 上使用 Visual Studio Code 开发了带有.Net Core 3 的 web API 没有问题。 我使用命令发布: dotnet publish -c release

但我无法在 IIS 上部署:发布命令不会生成任何“web.config”文件,因此我使用在 web 上找到的此配置(可能适用于 Core 2.0?):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\thenameofmydll.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

我的“program.cs”:

public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();

        }

         public static IHostBuilder CreateHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }); 
    }

我的问题:

  • “program.cs”是否可以与 IIS 一起使用?

  • “web.config”是正确的?

我在 web 上找到了几个示例,但所有这些都是部分或不完整的......如果我要求以前提出的问题,很抱歉,但我找不到.Net Core 3 的完整示例

谢谢!

IIS 中有Microsoft 文档可用于 .Net CORE 3.x 应用程序部署。 简而言之,首先您需要在 IIS 服务器中安装Hosting bundle for .Net core 3.x。 然后,您可以将应用程序发布为自包含应用程序或依赖于框架的应用程序。 您可以在设置发布设置时使用 select 此选项。

你的 web.config 应该是这样的

<configuration>
   <location path="." inheritInChildApplications="false">
     <system.webServer>
       <handlers>
         <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" 
         resourceType="Unspecified" />
       </handlers>
       <aspNetCore processPath=".\<app name>.exe" 
       stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" 
       />
    </system.webServer>
  </location>
</configuration>

根据asp.net 核心文件

如果省略 -r 参数,则会为您当前的平台创建一个可执行文件。

我建议您可以尝试在命令中设置运行时版本,然后重试。 它将添加 web.config 文件。

dotnet publish
 -c Release
 -f netcoreapp3.1 
-r win-x64 

此外,任何对目标平台具有平台特定依赖关系的 NuGet 包都将复制到发布文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM