gpt4 book ai didi

azure - 部署的 REST API 总是给出 500 错误

转载 作者:行者123 更新时间:2023-12-03 03:59:42 24 4
gpt4 key购买 nike

我使用 asp.net core 3.1 创建了我的第一个 REST API。它非常简单,只有一个 Controller ,有两条路由,并与 SQL 数据库通信(使用 Azure 的 DB)。在本地主机上运行它一切正常。我尝试使用 Microsoft 自己的指南和各种 YouTube 视频将其部署到 Azure。但是,我总是收到 500 内部服务器错误。我直接从 VS 2019 发布它。它表示 Web 应用程序已启动并准备就绪。

除了 500 之外,我在控制台日志中没有收到任何错误。

我尝试将“发布”窗口上的“配置”设置更改为“调试”而不是“发布”,但它从未遇到任何断点。

我还点击了“发布”页面上的“验证连接”按钮,它表示连接正常。

这是我的Program.cs:

public class Program
{
public static void Main(string[] args)
{
// CreateHostBuilder(args).Build().Run();

var host = CreateHostBuilder(args).Build();

using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<DataContext>();
context.Database.Migrate();
Seed.SeedScores(context);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occured during migration");
}
}

host.Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}

这是Startup.cs:

public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production")
{
services.AddDbContext<DataContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("LogansAppProd")));
}
else
{
services.AddDbContext<DataContext>(opt =>
opt.UseSqlServer(Configuration.GetConnectionString("LogansAppContextDev")));
}

services.AddControllers();
services.AddCors();
services.AddScoped<IScoreRepo, SqlScoreRepo>();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();
app.UseCors("AllowAll");
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}

最后这是 Controller (仅显示其中一条路线):

[Route("api/[controller]")]
[ApiController]
public class ScoresController : ControllerBase
{
private readonly IScoreRepo _repository;

public ScoresController(IScoreRepo repository)
{
_repository = repository;
}

//GET api/scores
[HttpGet]
public async Task<IActionResult> GetScores()
{
var scoreItems = await _repository.GetAllScores();

return Ok(scoreItems);
}
}

这是项目设置: enter image description here

这是 appsettings.json。 appsettings.Development.json 是相同的,只是使用了不同的连接字符串,出于安全考虑,我将其省略:

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"LogansAppContextProd": "Data Source=tcp:myserverhere.database.windows.net,1433;Initial Catalog=MyApp_db;User Id=idgoeshere@myappdbserver;Password=passwordgoeshere"
}
}

最后,这是 launchSettings.json:

{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:65278",
"sslPort": 44321
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
},
"LogansApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

这是与 2019 年相比的发布窗口表单: enter image description here

在 Azure 的 API 页面上,它确实在图表中显示了所有 500 个错误。不确定还可以尝试什么。

最佳答案

正如评论中提到的,有几种方法可以查看正在发生的情况,

  • 您可以通过 https://yoursitename.scm.azurewebsites.net 使用 KUDU 控制台,查看启动时是否抛出任何错误

  • 尝试添加 Application Insights到应用程序。您应该在应用程序启动时看到错误。

关于azure - 部署的 REST API 总是给出 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62968601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com