我在 net5 中部署了一个简单的 Web API,启用了 swagger(使用默认设置),这意味着在Startup.cs中:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyCompany.WebApi", Version = "v1" });
});
Run Code Online (Sandbox Code Playgroud)
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyCompany.WebApi v1"));
Run Code Online (Sandbox Code Playgroud)
我将相同的应用程序部署到 2 个本地 IIS 网站,第一个作为在默认端口 80 上运行的默认网站的应用程序,如下所示:
第二个作为单独的 WebSite 节点运行在端口 8085 上,如下所示:
然后对于第二个(作为单独的 WebSite 节点托管),一切正常,因此我可以看到我的 API 定义:
但对于第一个,作为默认网站下的应用程序托管的API 文档无法加载:

因此,看起来 swagger 正在搜索 index.html 以在网站的“根”中显示 Swagger-UI,而在第一个选项(应用程序托管在 Default WebSite 文件夹下)的情况下,它找不到显示 swagger UI 的方式。在这种情况下,我们是否需要在 swagger 定义中添加一些特定的内容?
感谢您的任何回复!
以马内利.
由于我目前正在评估 Blazor(服务器),我在 VS2019(版本 16.3.8)中制作了一个简单的 POC 应用程序来订购比萨饼。我创建了一个 Blazor 服务器应用程序,它从 Web API 核心 3.0 项目中获取它的数据,没什么,在 Index razor 页面中启动时获取数据的实现如下:
隐藏外部 API 调用的服务如下实现:
因此,我在创建的 http 客户端实例上使用常规 GetStringAsync() 方法,该方法将请求的数据作为 json 字符串返回,最终反序列化为所需的对象类型。但是,不幸的是,我无法在此处使用 GetJsonAsync() 方法,如可在此处找到的 GitHub 示例所示:
https://github.com/software-architects/learn-blazor/tree/master/samples/RestApi
搜索了一段时间后,我来到了下一个站点:
https://learn-blazor.com/architecture/rest-api
这解释了我必须使用“HttpClientJsonExtensions”,如该站点的下一个片段所述:
因此,在下载示例并快速查看“RestApi.Client”项目(其中包含 WebAssembly 托管应用程序)后,我看到了下一个引用的依赖项:
它具有(显然)“Http”类上的扩展方法,用于从客户端应用程序中使用 GetJsonAsync() 方法。
所以,我的问题很明显,我如何在基于 Blazor Server 的应用程序中具有相同的行为,因为我的基于 Blazor Server 的应用程序中没有 Microsoft.AspNetCore.Blazor 依赖项,如下所示:
而且因为我的 PizzaMenuService 位于我的 Blazor 服务器应用程序的“服务”文件夹中并调用 Rest API(如我的请求开头所示),它没有执行 GetJsonAsync() 的扩展方法......如何这可以在基于 Blazor 服务器的应用程序上实现吗?
感谢任何回应!
伊曼纽尔·纽顿斯。