刚接触 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中要使用的服务器的专用名称),设置并绑定如下:
在测试基本设置时,我观察到众所周知的“确保应用程序池身份对物理路径具有读取权限...”,因此我设置了权限:
重新启动应用程序池和网站,我仍然观察到:
再次检查,测试连接仍然抱怨物理路径的访问:
我在同一个 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。
然而,这是“下一个要观察的”错误。首先要解决的问题大概是设置物理路径的访问权限。
根据 browsermator 的评论于 2024 年 11 月 6 日更新: 我已在目标计算机上下载并执行了 .NET Core Hosting Bundle 安装程序。我可以观察到的唯一不同之处是 ASP.NET Core 的版本较新(从 8.0.8 到 8.0.10):
尝试了我之前尝试过的所有方法——没有运气。
仍然没有被任何智慧所触动。让我们推迟任何高级设置。让我们以愚蠢的方式谈谈(因为我现在也这么想)。编译示例应用程序(由上述模板生成)后,它在本地运行。这是我在
bin\
子目录中可以观察到的:
是应该发布的所有内容吗?我需要通过复制文件来发布它。那么,它应该进入
C:\inetpub\myapp\
的哪个子目录?
开始理解我所要求的内容的可能方法是学习: