我在我的api中使用路由前缀
[RoutePrefix("api/currencies")]
public class DefCurrencyController : ApiController
{
[HttpGet, Route("")]
public List<DefCurrency> GetAllCurrencies()
{
return DefCurrency.AllDefCurrency;
}
}
我的webapi配置文件
namespace ERPServices
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
}
}
}
我正在尝试使用
联系或访问GetAllCurrencies()
http://localhost:1865/api/currencies
它返回错误
HTTP错误404.0 - 未找到您正在寻找的资源 删除,更改名称或暂时不可用。
我该怎么做来测试我的控制器api?
答案 0 :(得分:2)
抛弃控制器上的RoutePrefix
属性,只需在方法上声明所需的路径:
public class DefCurrencyController : ApiController
{
[HttpGet, Route("api/currencies")]
public List<DefCurrency> GetAllCurrencies()
{
return DefCurrency.AllDefCurrency;
}
}
路由前缀用于声明要应用于控制器中所有方法的路径的一部分(例如,它们位于某个区域中)。
此外,您在这里不需要HttpPost
,这应该只是GET。
在任何基于约定的路由之前,您还应该在WebApiConfig
中调用config.MapHttpAttributeRoutes();
。
答案 1 :(得分:1)
答案 2 :(得分:1)
使WebAPI工作需要几件事。
添加这是你的项目:
using System.Web.Http;
namespace WebConfig
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
}
}
}
在Global.asax
文件中,将其添加到Application_Start
中以调用Register
方法:
GlobalConfiguration.Configure(WebApiConfig.Register);
此外,在Web服务中,尝试更改以下值以测试路由:
[RoutePrefix("api")]
public class DefCurrencyController : ApiController
{
[Route("currencies")]
public HttpResponseMessage Get()
{
return new HttpResponseMessage(System.Net.HttpStatusCode.OK);
}
}