首页 > 解决方案 > 升级到 .Net Core 2.2 后获取 405 MethodNotAllowed

问题描述

将 .Net Core 从 2.1 升级到 2.2 后对控制器运行集成测试

在为控制器上不存在的 URL 运行测试用例时,我得到 405 MethodNotAllowed。

我希望得到状态码 404(与升级到 2.2 之前一样),但得到 405 MethodNotAllowed。

控制器:

[Authorize]
[Authorize(Policy = Constants.APIPolicies.OrgId)]
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true, Duration = 0)]
[Route("api/patient")]
[Produces("application/json")]
public class PatientController : Controller {
        ...
        ...

        [Audit(Constants.AuditParameters.PatientUidRoot)]
        [HttpPost("v1/{" + Constants.RouteParams.orgId + "}/ResolvePatientId")]
        public async Task<IActionResult> GetPatientIdByUID([FromRoute] Guid orgId, [FromBody] UidModel patientUid)
        {
            ...
        }

        ...
        ...
}

测试:

patientUid = new UID(validRoot, validExtension);
response = await _mApiHostFixture.Client.PostAsync(string.Format("/api/patient/v1/{0}/ResolvePatientIdxx", orgId), new JsonContent(patientUid));
response.StatusCode.Should().Be(HttpStatusCode.NotFound);

标签: .net-core.net-core-2.2

解决方案


推荐阅读