C# 不允许使用Asp.Net Core 3.1 405方法
嗨,伙计们,我需要帮助。。我总是得到不允许的405方法 我使用的是Asp.Net核心Web应用程序3.1,我对HttpGet没有问题,但是当我使用HttpPost时,它总是返回405状态代码 这是我的控制器C# 不允许使用Asp.Net Core 3.1 405方法,c#,asp.net-core-webapi,C#,Asp.net Core Webapi,嗨,伙计们,我需要帮助。。我总是得到不允许的405方法 我使用的是Asp.Net核心Web应用程序3.1,我对HttpGet没有问题,但是当我使用HttpPost时,它总是返回405状态代码 这是我的控制器 [Route("api/[controller]")] [ApiController] public class ExamController : ControllerBase { [HttpPost("PostValue")] public ActionResult<
[Route("api/[controller]")]
[ApiController]
public class ExamController : ControllerBase
{
[HttpPost("PostValue")]
public ActionResult<HttpResponseMessage> PostInfo([FromBody] PersonalInfo info)
{
string json = JsonConvert.SerializeObject(info);
HttpClient client = new HttpClient();
var response = client.PostAsync("https://sampleapi/receive", new StringContent(json, Encoding.UTF8, "application/json"));
if (response.IsFaulted)
return BadRequest(response);
return Ok(response);
}
}
查看提供的图像,您可以使用chrome发出url请求,这是一个HTTP GET命令。因此,您的应用程序获得了HTTP GET命令,但您的方法希望接受HTTP POST方法。这就是为什么它说“方法不允许”
如果您想尝试http命令,您需要一个web测试工具,例如 查看提供的图像,您可以使用chrome发出url请求,这是一个HTTP GET命令。因此,您的应用程序获得了HTTP GET命令,但您的方法希望接受HTTP POST方法。这就是为什么它说“方法不允许”
如果您想尝试http命令,您需要一个web测试工具,例如 除了postman测试方法之外,测试post请求的另一种方法是使用ajax在jquery中发送post请求,下面是一个示例:
<script>
$(function () {
$("#send").click(function () {
var personalInfo = { Id: $('#Id').val(), Name: $('#Name').val() };
$.ajax({
url: 'http://localhost:50855/api/Exam/PostValue',
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: JSON.stringify(personalInfo),
//success: function (data, textStatus, xhr) {
// console.log(data);
//},
//error: function (xhr, textStatus, errorThrown) {
// console.log('Error in Operation');
//}
});
});
})
</script>
<form id="form1">
Id : <input type="text" name="Id" id="Id" />
Name: <input type="text" name="Name" id="Name" />
<input type="button" id="send" value="Send Post Data" />
</form>
$(函数(){
$(“#发送”)。单击(函数(){
var personalInfo={Id:$('#Id').val(),Name:$('#Name').val();
$.ajax({
网址:'http://localhost:50855/api/Exam/PostValue',
键入:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
数据:JSON.stringify(personalInfo),
//成功:函数(数据、文本状态、xhr){
//控制台日志(数据);
//},
//错误:函数(xhr、textStatus、errorshown){
//console.log(“操作错误”);
//}
});
});
})
身份证件:
姓名:
以下是测试结果:
除了postman测试方法之外,测试post请求的另一种方法是使用ajax在jquery中发送post请求,下面是一个示例:
<script>
$(function () {
$("#send").click(function () {
var personalInfo = { Id: $('#Id').val(), Name: $('#Name').val() };
$.ajax({
url: 'http://localhost:50855/api/Exam/PostValue',
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: JSON.stringify(personalInfo),
//success: function (data, textStatus, xhr) {
// console.log(data);
//},
//error: function (xhr, textStatus, errorThrown) {
// console.log('Error in Operation');
//}
});
});
})
</script>
<form id="form1">
Id : <input type="text" name="Id" id="Id" />
Name: <input type="text" name="Name" id="Name" />
<input type="button" id="send" value="Send Post Data" />
</form>
$(函数(){
$(“#发送”)。单击(函数(){
var personalInfo={Id:$('#Id').val(),Name:$('#Name').val();
$.ajax({
网址:'http://localhost:50855/api/Exam/PostValue',
键入:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
数据:JSON.stringify(personalInfo),
//成功:函数(数据、文本状态、xhr){
//控制台日志(数据);
//},
//错误:函数(xhr、textStatus、errorshown){
//console.log(“操作错误”);
//}
});
});
})
身份证件:
姓名:
以下是测试结果:
好的,我一直在阅读有关通过输入web.config删除WebDav的内容,但这对我的core 3.1不起作用。您需要做的是通过以下方式将其从IIS中删除:
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
注意:如果服务器上的WebDav不起作用,您可能还需要从服务器上删除它,因为我在排除故障时先删除了它。好的,所以我一直在阅读有关通过输入web.config来删除WebDav的内容,但这对我的core 3.1不起作用。您需要做的是通过以下方式将其从IIS中删除:
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
注意:如果服务器上的问题无法解决,您可能还需要从服务器上删除该问题,因为我在排除故障时首先删除了该问题。我只想将我的问题和解决方案添加到此线程中,以防其他人意外发现此问题 我收到了一个405错误代码,尽管操作被HttpPost和ValidateAntiForgeryToken属性修饰,并确保发布的表单数据包含防伪标记。本地的一切都很好,但当我把所有东西都放到服务器上时,我就开始接收405错误。事实证明,这个错误与我在应用程序中所做的事情无关。这实际上是MySQL数据库中存储过程中的一个问题。在本地,区分大小写不是一个问题,但在服务器上,我将一个表的名称用小写字母大写,这导致出现一个错误,并给出了这个非常模糊的405错误 我想这里学到的教训是检查一切:)
编辑:为了清楚起见,我的问题与MySQL和Linux托管有关。不确定如果使用Windows托管解决方案,是否也适用此问题。我只想将我的问题和解决方案添加到此线程中,以防其他人偶然发现此问题 我收到了一个405错误代码,尽管操作被HttpPost和ValidateAntiForgeryToken属性修饰,并确保发布的表单数据包含防伪标记。本地的一切都很好,但当我把所有东西都放到服务器上时,我就开始接收405错误。事实证明,这个错误与我在应用程序中所做的事情无关。这实际上是一个问题