Asp.net mvc 未找到与请求URI名称匹配的HTTP资源http://localhost:7245/api/ftpconfiguration/retrieveftpdetails'

Asp.net mvc 未找到与请求URI名称匹配的HTTP资源http://localhost:7245/api/ftpconfiguration/retrieveftpdetails',asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我需要在web服务“APIService”中的“FtpConfiguration”控制器中调用名为“RetrieveFtpDetails”的函数。此外,此web服务是作为现有项目的新项目创建的 RouteConfig.cs WebApiConfig.cs public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi",

我需要在web服务“APIService”中的“FtpConfiguration”控制器中调用名为“RetrieveFtpDetails”的函数。此外,此web服务是作为现有项目的新项目创建的

RouteConfig.cs

WebApiConfig.cs

public static void Register(HttpConfiguration config)
{
 config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { controller = "API" }
            );
}
FTPC配置控制器看起来像:

public class FtpConfigurationController : ApiController
{
 [Route("api/ftpconfiguration/retrieveftpdetails")]
 [HttpPost]
 public List<string> RetrieveFtpDetails() 
 {
  List<string> lstftpcongif;
  using (APM context = new APM())
  {
   lstftpcongif = (from s in context.M_FtpConfigTable select 
                   s.Mode).ToList();
  }
  return lstftpcongif;
 }
}
然后我打电话,得到如下结果:

    <Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:7245/api/ftpconfiguration/retrieveftpdetails'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'ftpconfiguration'.
</MessageDetail>
</Error>

为什么会出现此错误?

我发现您的本地主机url不正确

1检查您的web api url或修复webapi的localhost端口。因此没有错误。 2参见示例

通过使用它,您可以解决您的错误

也许这对你有帮助

谢谢

我看到三个问题:

您正在使用[HttpPost]-确保您正在使用POST测试此操作。 将默认值路由到API控制器-确保有一个。 您的路由模板无效-因为它包含操作,所以您的路由显然缺少该模板。我建议改为:

public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "Route",
        routeTemplate: "api/{controller}/{action}",
        defaults: new { controller = "FtpConfiguration" }
    );

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


试试这个:WebApiConfig.cs

public static void Register(HttpConfiguration config)
{
 config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { controller = "API" }
            );
}
为什么在方法上有[HttpPost]?你是如何点击URL来测试它的?
public static void Register(HttpConfiguration config)
{
 config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { controller = "API" }
            );
}