Asp. Net Core 3.1 405 Метод не разрешен - PullRequest
0 голосов
/ 25 марта 2020

Привет, ребята, мне нужна помощь. Я всегда получаю 405 метод, не разрешенный

Я использую Asp. Net Базовое веб-приложение 3.1, у меня нет проблем с HttpGet, но когда я использую HttpPost, он всегда возвращает 405 код состояния

Вот мой контроллер

[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);
    }
}

Это мой класс запуска

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddCors(c =>
        {
            c.AddPolicy("AllowOrigin", options => options.AllowAnyOrigin());
        });
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseStatusCodePages();

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

        app.UseCors(options => options.AllowAnyOrigin());
    }

Вот пример изображения URL и результат

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Глядя на предоставленное изображение, вы используете chrome для выдачи запроса url, который является командой HTTP GET. Итак, ваше приложение получило команду HTTP GET, но ваш метод хочет принять метод HTTP POST. Вот почему написано «метод не разрешен».

Если вы хотите попробовать http-команды, вам нужен инструмент для веб-тестирования, такой как PostMan .

0 голосов
/ 26 марта 2020

В дополнение к методу проверки почтальона, еще один способ проверить почтовый запрос - use ajax to send post request in jquery, вот пример:

        <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>

Вот результат теста: enter image description here

...