繁体   English   中英

在树莓派上运行 .NET6 SwaggerApi

[英]Running .NET6 SwaggerApi on a raspberrypi

我正在尝试在我的树莓派上运行 a.Net6 实体框架 API。

按照 Microsoft 文档并运行应用程序后,我无法访问 swaggerui 或 API。

当我尝试通过 http://localhost:5000/ 访问页面时,控制台中没有弹出错误

网络浏览器只返回 401 错误。

以下代码:

程序.cs:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<programContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("Context") ?? throw new InvalidOperationException("Connection string 'Context' not found.")));


builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();


var app = builder.Build();

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

app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

app.Run();

应用设置.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "programApiContext": "Server=(localdb)\\mssqllocaldb;Database=programApi.Data;Trusted_Connection=True;MultipleActiveResultSets=true",
    "programContext": "Server=(localdb)\\mssqllocaldb;Database=programApi.Data;Trusted_Connection=True;MultipleActiveResultSets=true"
  }

do.net-信息:

.NET SDK (gemäß "global.json"):
 Version:   6.0.301
 Commit:    43f9b18481

Laufzeitumgebung:
 OS Name:     debian
 OS Version:  11
 OS Platform: Linux
 RID:         debian.11-arm64
 Base Path:   /opt/dotnet/sdk/6.0.301/

Host (useful for support):
  Version: 6.0.6
  Commit:  7cca709db2

.NET SDKs installed:
  6.0.301 [/opt/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.6 [/opt/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.6 [/opt/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET runtimes or SDKs:
  https://aka.ms/dotnet-download

nginx 站点配置:

server {
    listen        80;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

启动您的应用程序后,请点击以下链接获取 swagger

https://localhost:5000/swagger/index.html

检查你的launchSettings.json

    "development": {
    "commandName": "Project",
    "dotnetRunMessages": true,
    "launchBrowser": true,
    "launchUrl": "swagger",
    "applicationUrl": "https://localhost:5000",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "development"
    }
  }

要检索 Swagger 文档,您需要使用其完整路径。 开始使用 Swashbuckle 和 ASP.NET 核心文档:

启动应用程序并导航到https://localhost:/swagger/v1/swagger.json 生成的描述端点的文档如 OpenAPI 规范 (openapi.json) 中所示。

Swagger UI 可以在https://localhost:/swagger找到。 通过 Swagger UI 探索 API 并将其合并到其他程序中。

您必须使用额外的代码在根目录下显示 UI

要在应用程序的根目录 (https://localhost:/) 提供 Swagger UI,请将 RoutePrefix 属性设置为空字符串:

app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
    options.RoutePrefix = string.Empty;
});

暂无
暂无

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

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