【发布时间】:2013-03-01 19:47:39
【问题描述】:
我创建了一个 Web Api OData 控制器并尝试直接查看它,但它不起作用。
WebApiConfig 配置
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute("odata", "odata", GetEdmModel());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
public static IEdmModel GetEdmModel()
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Customer>("Customers");
builder.Namespace = "PackageManager.Models";
return builder.GetEdmModel();
}
在App开始调用注册:
WebApiConfig.Register(GlobalConfiguration.Configuration);
API 控制器:
public class CustomersController : EntitySetController<Customer, string>
{
NorthwindDbContext _Context = new NorthwindDbContext();
[Queryable]
public override IQueryable<Customer> Get()
{
return _Context.Customers;
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
_Context.Dispose();
}
}
尝试访问: 本地主机:2375/odata/客户
然后总是出错:
找不到资源。
【问题讨论】:
-
我查看了您的代码,对我来说它看起来非常好。 “找不到资源”看起来不像是 Web API 抛出的错误,所以请求根本不能发送到 Web API。可能是 IIS 不适合您。该文件夹是否属于 IIS 应用程序?
-
我没有部署在IIS上,我用的是vs iis express。最有趣的是,首先我添加了 Odata 控制器,它工作正常。之后安装热毛巾单页应用程序然后它不工作。它尝试了很多选项,但没有奏效。如果您有任何其他线索,请建议我。
-
我也有同样的问题 - 你能解决这个问题吗?
-
@t316 问题与其他控制器配置有关。所以它被路由到其他控制器而不是 Api 配置。
标签: asp.net-web-api odata