我正在通过Microsoft Learn教程学习“Create a web API with ASP.Net Core”。
在标题下,“构建和测试web API”,在指令(5),我得到了一个响应,“无法找到OpenAPI描述”。
对于步骤(6),当执行“ls”命令时,我得到的响应是:“没有设置目录结构,所以没有什么要列出。使用'connect'命令根据OpenAPI描述设置目录结构”。我已经尝试了这里建议的“connect”命令,并尝试了“dir”作为“ls”的替代。
我可以在步骤(7)中成功地更改目录,并执行步骤(8)的GET请求,并收到预期的回复。然而,“ls”命令在这里不起作用,它真的让我很困扰,似乎是httpprepl工具的一个重要功能。
如何让“ls”命令在这里工作或者告诉我为什么它不工作?
C:\Users\xxxx\source\repos\Learn\ContosoPizza>httprepl http://localhost:5000
(Disconnected)> connect http://localhost:5000
Using a base address of http://localhost:5000/
Unable to find an OpenAPI description
For detailed tool info, see https://aka.ms/http-repl-doc
http://localhost:5000/> ls
No directory structure has been set, so there is nothing to list. Use the "connect" command to set a directory structure based on an OpenAPI description.
http://localhost:5000/>
字符串
增加的建议结果--
C:\Users\xxxx\source\repos\Learn\ContosoPizza>dotnet --version
3.1.412
C:\Users\xxxx\source\repos\Learn\ContosoPizza>dotnet add WebAPI.csproj package Swashbuckle.AspNetCore -v 5.6.3
Could not find project or directory `WebAPI.csproj`.
4条答案
按热度按时间a0x5cqrl1#
对我来说,解决方案是简单地信任localhost的SSL证书,您可以使用以下命令来完成:
字符串
在做相同的教程时,我的一个朋友注意到,信任开发证书,已经包含在教程中,我忽略了自己做教程。这是官方帮助网站:信任Windows和macOS上的ASP.NET Core HTTPS开发证书。这可能会帮助有同样问题的人。
46scxncf2#
在步骤5中,
HttpRepl
发出警告Unable to find an OpenAPI description
,这意味着它找不到swagger端点,因此ls
命令无法工作。我假设您正在使用 VS Code 和 ASP.NET Core 5.0。下面是我运行
dotnet --version
的输出:字符串
如果我们使用的是 Visual Studio,那么记得在创建项目时启用swagger-我使用的是 Visual Studio 2019 创建截图:
x1c 0d1x的数据
指定OpenAPI描述
要找出要使用哪个端点,请打开文件
Startup.cs
并找到包含文本UseSwaggerUI
的代码片段。你应该会找到这个代码块:型
使用找到的端点并运行工具,如下所示:
型
如果您没有找到任何swagger的引用,请参阅下面的 * 上面的所有操作都不起作用,swagger is not installed*,了解如何为您的项目安装和配置swagger。
忽略您的环境
如果指定要使用的OpenAPI端点不起作用,则说明您没有在开发环境中运行Web API。因此,要么使用开发环境,要么在测试时取消if语句的注解(要设置开发环境,请参阅下面的 * 更改环境 *):
型
请记住在部署到生产环境之前还原未注解的代码(如果有的话)。
更改环境
您的Web API正在使用的配置文件在文件
Properties\launchSettings.json
中指定。打开文件并搜索ASPNETCORE_ENVIRONMENT
。然后将找到的示例更改为:型
如果这不起作用,或者示例已经设置为“开发”,这意味着您没有使用启动设置中指定的任何配置文件。如果未使用配置文件,
ASPNETCORE_ENVIRONMENT
默认为“Production”。使用dotnet run
命令时,--launch-profile
参数允许您指定要使用的配置文件:型
作为最后的手段,您可以在运行命令
dotnet run
之前,在您使用的shell中设置环境变量ASPNETCORE_ENVIRONMENT
:巴斯
型
CMD
型
PowerShell
型
然后在没有配置文件的情况下运行应用程序:
型
在没有配置文件的情况下运行时,默认端口应为5000或5001。但是,读取命令的输出,以查看它分配给您的Web API的端口。
请注意,如果您使用 VS Code 运行您的项目,VS Code 可能也在
.vscode\launch.json
中创建了启动设置。这取决于您如何配置 VS Code 以及您允许它做什么。我找到了一些较旧的文章,这些文章声称 VS Code 的某些扩展可能会干扰启动设置,但他们没有指定是哪些。以上都不起作用,swagger未安装
如果上面没有一个工作,这意味着你没有安装swagger。为您的项目安装swagger,完成后,再试一次。
包安装
在 VS Code 中打开您的项目,从 Integrated Terminal 运行以下命令,并将 WebAPI.csproj 替换为您自己的项目文件名:
型
当然,您可以从 VS Code 外部运行该命令,将您的项目文件夹作为当前工作目录。
添加和配置Swagger中间件
将Swagger生成器添加到
Startup.ConfigureServices
方法中的services集合中,作为方法中的最后一条语句:型
在
Startup.Configure
方法中,在方法顶部启用中间件以提供生成的JSON文档和Swagger UI:型
了解更多关于swagger、配置文件和环境的设置
Get started with Swashbuckle and ASP.NET Core
Managing Production and Development Settings in ASP.NET Core的
Use multiple environments in ASP.NET Core的
ASP.NET Core web API documentation with Swagger / OpenAPI的
ilmyapht3#
我也遇到过同样的问题。我通过以下方法解决了这个问题:
1.在Developer PowerShell(VS 2022)中,运行'dotnet run'命令。
x1c 0d1x的数据
1.保持这个powershell原样。
1.现在打开新的PowerShell并运行“httprepl https://localhost:{PORT}”
你现在应该可以运行API了。
的
dba5bblo4#
您必须通过dotnet run连接到Web服务器。