2016-09-16 25 views
0

我訪問的WebAPI資源這樣的:爲什麼參數不綁定到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 Error 403.14 Forbidden The Web server is configured to not list the contents of this directory

下面是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

郵政路線配置繼承。 –

+0

剛發佈。我沒有改變RouteConfig。 – 4thSpace

+0

它是api控制器還是mvc控制器?路由配置看起來像mvc config,而uri看起來像api。 –

回答

1

你的WebAPI Get端點期待someparams爲參數ParamOneParamTwo

更改您的端點簽名下面應該與給定的URL工作:

localhost/myapp/api/values?ParamOne=123&ParamTwo=testing

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包:

  • Microsoft.AspNet。 WebApi.Core
  • Microsoft.AspNet.WebApi.WebHost

一兩件事,您的控制器必須從ApiControllerController

+0

這也行不通。 RouteConfig是什麼樣子的? – 4thSpace

+0

檢查我的更新。 – Oluwafemi

相關問題