我将在asp.net mvc 4中创建一个Odata api,用于从新表中获取数据。当我调用Odata方法并在代码中使用debug它正确显示数据。但是当涉及到浏览器时,它显示空屏幕。 代码中没有显示错误。
这是我的Odata方法:
[Queryable]
public HCPData GetHCPData([FromODataUri] int key)
{
// return SingleResult.Create(db.HCPDatas.Where(hcpdata => hcpdata.Id == key));
IQueryable<HCPData> result = db.HCPDatas.Where(p => p.CompanyId == key);
return result.FirstOrDefault();
}
这是我的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 }
);
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
//var entitySetConfiguration1 = modelBuilder.EntitySet<Job>("Job");
var entitySetConfiguration1 = modelBuilder.EntitySet<HCPData>("HCPData");
var customer = modelBuilder.EntityType<HCPData>();
modelBuilder.EntitySet<HCPData>("HCPData");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: modelBuilder.GetEdmModel());
}
当我在浏览器中检查空屏幕的控制台时,它显示错误:&#34; NetworkError:406 Not Acceptable - http://localhost:50369/HCPData?key=11&#34;
请让我知道问题的解决方案。提前谢谢。
答案 0 :(得分:0)
如果您按如下方式更改控制器,结果如何:
public class HCPDataController : ODataController
{
[EnableQuery]
public HCPData GetHCPData([FromODataUri] int key)
{
...
}
}
因为在我这边,如果我按如下方式实现控制器,它可以工作:
[EnableQuery]
public HCPData GetHCPData([FromODataUri] int key)
{
var data = new HCPData
{
CompanyId = 2,
Name = "Key = " + key
};
return data;
}
让我发出以下请求:
我可以得到以下回复:
{
"@odata.context":"http://localhost:62591/odata/$metadata#HCPData/$entity","CompanyId":2,"Name":"Key = 11"
}