为什么我在尝试发布请求时收到"方法不允许"405 异常?



在我的c#解决方案中,我将发票模型从MVC项目发送到API项目。但是由于某种原因,我总是得到一个异常405 -"方法不允许"。我试着修改网页。配置,在program.cs中启用cors,向控制器端点添加不同的属性,但这些都不起作用。当我尝试发送请求与邮差https://localhost:7175/api/Invoice,它的工作,但它不工作,当我通过MVC控制器方法访问它。

这里我正在访问API端点,(成功状态码总是false):

public async Task<FileStreamResult> Download(Invoice? invoice)
{
string apiUrl = "https://localhost:7175/api/Invoice/Post";
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(apiUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent(invoice.ToString(), Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsJsonAsync(apiUrl, content);
response.EnsureSuccessStatusCode();
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync();
var table = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Data.DataTable>(data);
}

}
MemoryStream stream = genPdf.GeneratePdf(invoice);
return File(stream, mimeType, fileName);
}

这是来自API项目的控制器端点(当使用postman时,我只在这里接收发票模型):

[HttpPost]
public MemoryStream Post([FromBody] Invoice invoice)
{
MemoryStream stream = genPdf.GeneratePdf(invoice);
return stream;
}
我已经解决了我自己的问题。我传递给PostAsJsonAsync()的数据类型与预期的不同。所以我只是传递发票模型,因为它没有显式地将其转换为json,它的工作。

最新更新