WebApi2 总是重定向第一个请求

WebApi2 always redirecting first request

我在 IIS 上托管了一个 ASP.NET WebApi2 项目。每个 GET 请求都被重定向到与原始请求相同的 位置 ,但重定向(正确地)剥离了身份验证 header,因此请求失败并返回 401。

这是怎么回事?为什么我的初始 GET 请求总是被重定向?

卷曲:

    curl https://localhost/myapp/api/test

控制器:

public class TestController : ApiControllerBase
{
    [HttpGet]
    [ApiAuthorize]
    [Route("api/test")]
    public IHttpActionResult Get()
    {
        return Ok();
    }

    [HttpPost]
    [ApiAuthorize]
    [Route("api/test")]
    public IHttpActionResult Post()
    {
        return Ok();
    }
}

IIS 日志:

   2020-07-31 14:48:32 127.0.0.1 GET /mysite/api/test - 443 - 127.0.0.1 PostmanRuntime/7.26.2 - 302 0 0 13
   2020-07-31 14:48:32 127.0.0.1 GET /MySite/api/test - 443 - 127.0.0.1 PostmanRuntime/7.26.2 https://server/mysite/api/Test 401 0 0 458

原来重定向是IIS自己触发的。最初的请求是 https://localhost/myapp/api/test,但我的应用程序在默认网站下注册为应用程序 MyApp

看起来重定向是 IIS 更正原始请求以考虑 myapp 的不同大小写:https://localhost//MySite/api/Test

不确定这是设计还是默认行为,但我花了 2 天的调试时间:-(