繁体   English   中英

没有找到与请求URI匹配的HTTP资源 - 并且 - 在控制器上找不到与请求匹配的操作

[英]No HTTP resource was found that matches the request URI - and - No action was found on the controller that matches the request

我正在尝试在API应用程序中构建一个新端点,该端点已经有很多其他端点正常工作。 不知道我做错了什么。 我收到两个错误:

消息:未找到与请求URI匹配的HTTP资源' http:// localhost:62342 / api / VoiceMailStatus

MessageDetail:未在与请求匹配的控制器“VoiceMailStatus”上找到任何操作。

这是控制器:

public class VoiceMailStatusController : ControllerBase
{
    [HttpPost]
    [Route("api/VoiceMailStatus")]
    public string VoiceMailStatus(string var)
        {
            ...
        }
}

这是路线:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

我正在使用PostMan:

在此输入图像描述

这里有很多关于这两个错误消息的线程。 我读了很多,但还没有找到解决方案。 其中一人说要改变这个:

public string VoiceMailStatus(string var)

对此:

public string VoiceMailStatus(string var = "")

虽然这确实让错误消失了,但是在调试时我能够进入方法, var总是只是一个空字符串。

编辑:GOT IT WORKING

除了根据Andrii Litvinov的回答添加[FromBody]之外,我还需要做一件事。 这是什么:

public string VoiceMailStatus(string var)
{
     ...
}

现在是这样的:

public string VoiceMailStatus([FromBody] VMStatus request)
{
     ...
}

然后VMStatus只是一个带有单个string属性的小类:

public class VMStatus
{
    public string var { get; set; }
}

您可能希望将此添加到您的控制器,因为您在路由配置中有api:

[RoutePrefix("API/VoiceMailStatus")]

然后将其添加到您的操作:

[Route("VoiceMailStatus", Name = "VoiceMailStatus")]

这应该将操作绑定到url localhost / api / voicemailstatus / voicemailstatus

您很可能需要将FromBody属性应用于您的参数:

public string VoiceMailStatus([FromBody] string var)

如果这没有帮助尝试将参数重命名为其他内容,例如: var1 ,因为var保留在C#中工作并且可能导致一些绑定问题,但我怀疑是这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM