7

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

一旦发布到在 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();
});

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

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

4

2 回答 2

15

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

// app.UseHttpsRedirection();

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

于 2021-01-17T18:02:21.743 回答
1

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

看看您是否可以使用 http:// 访问您的网站

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

于 2020-06-17T19:24:18.117 回答