![](/img/trans.png)
[英]No HTTP resource was found that matches the request URI, No type was found that matches the controller
[英]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.