2015-06-02 51 views
0

我有一个使用ADO.NET Framework的OData web api,其中控制器操作在某种程度上没有被达到。在ASP.NET Web API中没有达到控制器操作

API正确接收HTTP请求并解析它以执行正确的操作,但未达到该操作。

作为回报,chrome浏览器显示认证窗口。

我一直在调试这么久,但无法弄清楚如何解决这个问题。

该控制器(剥离版本):

public class DataController : ODataController 
{ 
    private readonly DataModel DataAccessModel = new DataModel(); 


    public DataController() 
    { 
     ....... 
    } 

    [HttpGet, EnableQuery] 
    public IQueryable<Record> GetRecord(ODataQueryOptions<Record> options) 
    { 

     try 
     { 
      IQueryable<ActivationRequestLog> result; 
      try 
      { 

       result = DataAccessModel.Recordss; 
      } 
      catch (Exception ex) 
      { 
       ...... 
      } 
     } 

    } 
} 
+0

你有Windows验证安装在Startup.Auth类项目? – Aram

+0

尝试在方法的顶部添加[AllowAnonymous]? –

+0

'[HttpGet]'属性是否自动将任何函数映射到OData GET函数?如果不是,请尝试使用'public IQueryable Get(ODataQueryOptions options)'而不是'public IQueryable GetRecord(ODataQueryOptions options)'。如果你提供'WebApiConfig',它也会很好。 –

回答

0

你能呈现怎样的控制器已经在WebApiConfig类被注册?

如果您使用的是ODataConventionModelBuilder,那么您必须遵循某些命名约定来控制实体集的控制器。

例如如果我注册类型航空公司的航空实体集

 builder.EntitySet<Airline>("Airlines"); 

....然后默认/约定我需要实现

public class AirlinesController : ODataController<Airline> 
    { 
     [EnableQuery] 
     public IQueryable<Airline> Get() 
     { 
      DB db = Request.GetContext(); 
      return db.Airlines(); 
     } 
    } 
相关问题