首页 > 解决方案 > .Net Core C# Rest API“方法不允许”

问题描述

我有一个如下所示的 .Net Core C# API:

    [HttpPut]
    [Route("{primaryKey}")]
    public async Task<ActionResult<ResponseSingleX<ClassA>>> Update(Guid primaryKey, ClassA classA)
    {
        // Update database
    }

我尝试使用以下代码进行更新:

// Create a ClassA object and put some data in it
...

//GetServiceUrl() == return "http://localhost:9003/api/Configurations/";
serviceUrl = _shared.GetServiceUrl() + classA.PrimaryKey.ToString();
string requestBody = System.Text.Json.JsonSerializer.Serialize(classA);
HttpContent requestContent = new StringContent(requestBody, Encoding.UTF8, "application/json");
HttpResponseMessage responseMessage = await client.PutAsync(serviceUrl, requestContent);
Stream responseStream = await responseMessage.Content.ReadAsStreamAsync();
responseMessage.EnsureSuccessStatusCode();
var updatedResponse = await System.Text.Json.JsonSerializer.DeserializeAsync<ResponseSingleX<ClassA>>(responseStream, _serializerOptions);
Assert.True(updatedResponse.Success);
var updatedClassA = updatedResponse.Element;

我遇到的问题是 responseMessage == "Method Not Allowed"。由于这是我第一次使用 Rest(无论是哪种编程语言),我不知道为什么这不起作用。

更新0: 我发现了我的错误。请参阅我的答案以了解问题的原因。谢谢您的帮助!

标签: c#rest.net-core

解决方案


我发现了我的错误。类本身有一个定义了附加参数的 URL。

[Route("...") // <-This is what I missed
[ApiController]
public class SomeController
{
    ...
}

推荐阅读