c# - .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: 我发现了我的错误。请参阅我的答案以了解问题的原因。谢谢您的帮助!
解决方案
我发现了我的错误。类本身有一个定义了附加参数的 URL。
[Route("...") // <-This is what I missed
[ApiController]
public class SomeController
{
...
}
推荐阅读
- agora.io - 如何为 Agora 验证服务器生成的令牌
- android - Recyclerview 上的所有按钮清单都不起作用
- python-3.x - Tensorflow r1.12:TypeError:运行第二个脚本时已为 SparseTensorValue 注册的类型
- python - 从数据框中拆分和连接字符串
- lisp - 将 Lisp 语法与 (operator-integer-operator) 格式混淆
- r - 翻转顺序表中的列/行
- python - 如何从数字列中提取任何数字子集
- c++ - 宏“SCNxPTR”在 centos7 上不起作用
- android-studio - Android Studio 3.2.1 中的 Gradle 同步问题
- angular - Angular cli:如何防止 hsl 颜色在构建时转换为十六进制值