我正在访问这样的WebAPI资源:
localhost/myapp/api/values?ParamOne=123&ParamTwo=testing
在ValuesController中,我有这个:
public class MyParams {
public int? ParamOne {get;set;}
public string ParamTwo {get;set;}
}
[HttpGet]
public HttpResponseMessage Get([FromUri]MyParams someparams) {
...
}
当我尝试访问资源时,出现此错误:
HTTP错误403.14禁止将Web服务器配置为不列出 该目录的内容
这里是RouteConfig.cs,这只是默认值:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller="Home", action="Index", id=UrlParameter.Optional}
任何人都知道我做错了什么?
答案 0 :(得分:1)
您的WebAPI Get
端点期望someparams
作为参数不 ParamOne
和ParamTwo
。
将端点签名更改为以下内容应与给定的URL一起使用:
本地主机/ MyApp的/ API /值ParamOne = 123&安培; ParamTwo =测试
public HttpResponseMessage Get(int? ParamOne, string ParamTwo)
<强>更新强>
您问题中的路由配置适用于MVC控制器而非WebAPI控制器。请参阅下面的WebAPI路由配置:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
在Global.asax.cs Application_Start()
方法中,它的注册方式如下:
GlobalConfiguration.Configure(WebApiConfig.Register);
需要NuGet包:
还有一件事,你的控制器必须继承ApiController
而不是 Controller