如何在IIS上部署ASP.NET Core OpenAPI?物理路径的访问,以及可能出现的其他问题

问题描述 投票:0回答:1

刚接触 OpenAPI(微软版),被卡住了,感觉很愚蠢。抱歉在这里询问,但我找不到确切的信息。

使用微软官方教程:使用 ASP.NET Core 创建 Web API,ASP.NET Core Web API 生成示例应用程序(天气预报)。在本地启动时,它会显示使用已实现的服务的 Swagger 界面页面。到目前为止,一切都很好。

一步一步,我想将测试应用程序发布到远程IIS服务器。首先,我修改了代码,使 Swagger UI 独立出现在开发环境中:

// Configure the HTTP request pipeline.
if (true) // app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

我已经将应用程序发布到该文件夹,并将该文件夹复制到运行IIS的远程服务器(C:\inetpub中的专用子目录,URL中要使用的服务器的专用名称),设置并绑定如下:

The site

Bindings

Basic settings

在测试基本设置时,我观察到众所周知的“确保应用程序池身份对物理路径具有读取权限...”,因此我设置了权限:

Setting permissions to the path

重新启动应用程序池和网站,我仍然观察到:

Browser tells 404

再次检查,测试连接仍然抱怨物理路径的访问:

enter image description here

我在同一个 IIS 上成功运行另一个 Web 应用程序;但是,该应用程序使用较旧的 ASP.NET“非核心”,并且使用 Web 表单。新的 REST OpenAPI 使用 ASP.NET Core (8.0.8)。

对于上下文,我已经学习了如何实现 REST OpenAPI 应用程序,以及所有 CRUD 端点、身份验证、日志记录等。本地调试时一切正常。它甚至可以通过同一个远程虚拟 Azure 访问 SQL 服务器机器。

所以...我真的被困住了。

我的bug在哪里?我应该检查和设置什么?

更新(基于下面 Lex Li 的评论): 实际上,应该通过将

/swagger/index.html
添加到 Web URL 来调用 Swagger UI。

Swagger UI URL

然而,这是“下一个要观察的”错误。首先要解决的问题大概是设置物理路径的访问权限。

根据 browsermator 的评论于 2024 年 11 月 6 日更新: 我已在目标计算机上下载并执行了 .NET Core Hosting Bundle 安装程序。我可以观察到的唯一不同之处是 ASP.NET Core 的版本较新(从 8.0.8 到 8.0.10):

Newer ASP.NET Core

尝试了我之前尝试过的所有方法——没有运气。

仍然没有被任何智慧所触动。让我们推迟任何高级设置。让我们以愚蠢的方式谈谈(因为我现在也这么想)。编译示例应用程序(由上述模板生成)后,它在本地运行。这是我在

bin\
子目录中可以观察到的:

the bin\ subdirectory (displayed by Total Commander)

是应该发布的所有内容吗?我需要通过复制文件来发布它。那么,它应该进入

C:\inetpub\myapp\
的哪个子目录?

asp.net-core iis deployment configuration openapi
1个回答
0
投票

开始理解我所要求的内容的可能方法是学习:

ASP.NET Core 中的配置在 ASP.NET Core 中使用多个环境

© www.soinside.com 2019 - 2024. All rights reserved.