.NET Core 3.1 API - 307 临时重定向

NiA*_*iAu 5 api rest http-status-code-307 asp.net-core-3.1

将我的 .NET Core 2.2 API 升级到 .NET Core 3.1 时,需要进行大量更改。我不得不更新 Swashbuckle 包并更改启动文件。我现在使用 Swagger 在开发中运行它。

一旦发布到在 IIS 上运行的 Windows 2012 服务器,每个 API 调用都会返回 307 临时重定向。

在启动中,我必须删除 UseMvc 并添加 UseEndpoints

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

if (!env.IsProduction())
{
    app.UseSwagger();
    app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Digital Signatures V1"); });
}

app.UseMiddleware<LogContextMiddleware>();

app.UseMiddleware<CustomExceptionMiddleware>();

app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么我得到这个重定向状态?

在 Postman 中运行它时,它在请求测试服务器时总是返回 307。调用localhost的时候就OK了!

Ali*_*eit 10

如果您使用的是 HTTP,请检查您是否有这行代码Startup.cs并注释掉:

// app.UseHttpsRedirection();
Run Code Online (Sandbox Code Playgroud)

它基本上是一个从 HTTP 重定向到 HTTPS 的中间件。如果您将使用 HTTPS,您可以在生产中添加它。


小智 1

我今天遇到了类似的问题(请求得到307重定向),结果是https,以及IIS中的SNI映射。

查看是否可以通过 http:// 访问您的网站

如果这可以工作,但不适用于 https:// 那么你的问题很可能不是你的代码,而是 IIS 的某些设置。