【问题标题】:.NET API POST Endpoint not getting hit.NET API POST 端点没有被击中
【发布时间】:2022-11-30 21:27:12
【问题描述】:

我有一个 .net api,我想从控制台应用程序测试 api。 我要测试的方法是 POST 方法。我将控制台应用程序中的数据序列化为 json 字符串,我想将其发布到 API,但 API 没有被命中,我的控制台应用程序也没有收到任何错误.

我的 GET 调用虽然有效。这只是我无法上班的职位。

我的 API 端点 ->

[HttpPost]
        [Route("CreateException")]
        public async Task<IActionResult> CreateException([FromBody]string obj)
        {
            //await _exceptionDetailsService.AddExceptionDetails(exceptionDetails);
            return Ok();
        }

来自控制台应用程序的我的呼叫 ->

public async void ExceptionsAnalyzer(Exception exception)
        {
            HttpClient _httpClient = new HttpClient();

            StackTrace stack = new StackTrace(exception, true);

            StackFrame frame = stack.GetFrame(stack.FrameCount - 1);

            ExceptionDetails exceptionDetails = new ExceptionDetails
            {
                ExceptionMessage = exception.Message,
                InnerException = exception.InnerException?.ToString(),
                ExceptionType = exception.GetType().ToString(),
                ExceptionSourceFile = frame.GetFileName(),
                ExceptionSourceLine = frame.GetFileLineNumber().ToString(),
                ExceptionCaller = frame.GetMethod().ToString(),
                ExceptionStackTrace = exception.StackTrace,
                DateLogged = DateTime.Now

            };

            string json = JsonSerializer.Serialize(exceptionDetails);

            //var stringContent = new StringContent(json, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await _httpClient.PostAsJsonAsync("http://localhost:5296/api/ExceptionDetails/CreateException", json);
            if (response.IsSuccessStatusCode)
            {

            }
        }

我期待 api 端点被击中。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    除非 ExceptionDetails 是您的基本路径的一部分并且因此包含在所有 API 调用中,否则我认为您需要删除它。

    您将调用的 route 定义为 CreateException,因此 url 应为 &lt;base url&gt;/CreateException

    如果这没有帮助,请发布整个控制器的代码(使用端点方法)。

    【讨论】:

    • 我包含了 ExceptionDetails,因为那是我的控制器名称和路径。使用的标准路由 -> [Route("api/[controller]")]。我的 GET 方法也使用相同的路径。只是结束路线路径不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多