2017-03-31 87 views
0

我有一个控制器像下面如果请求的资源不支持HTTP方法“POST” enter image description here发送多形式的数据

WebApiConfig.cs

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.MapHttpAttributeRoutes(); 

     // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type. 
     // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries. 
     // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712. 
     //config.EnableQuerySupport(); 

     // To disable tracing in your application, please comment out or remove the following line of code 
     // For more information, refer to: http://www.asp.net/web-api 
     config.EnableSystemDiagnosticsTracing(); 
     config.Formatters.Add(new BrowserJsonFormatter()); 
    } 
} 

的功能不被打到
任何ID ea我做错了什么?

回答

1

尝试改变您注册属性的路由的顺序:

// This must come first 
config.MapHttpAttributeRoutes(); 

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

此外,如果你总是使用基于属性的路由我会建议你删除默认路由注册。

+0

删除默认路由做到了。谢谢 – Jester

0

看起来像您正在使用属性路由。检查以确保属性路由已启用。

WebApiConfig.cs

public static class WebApiConfig { 
    public static void Register(HttpConfiguration config) { 
     // Attribute routing. 
     config.MapHttpAttributeRoutes(); 

     // Convention-based routing. 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

机会是,你没有启用它和基于约定的路线是无法匹配的HTTP方法的路线。

+0

嗨感谢您的答复,但我已启用它。我再次检查 – Jester

+1

@Jester,你必须在基于会议的路线之前启用它。切换您目前在问题中的顺序。 – Nkosi