使用.Net Core5和Microsoft.AspNetCore.OData 8.0.1,我创建了一个OData Web API端点。 当我将我的控制器建立在ODataController的基础上,并且我试图将一个新记录发送到一个简单的post端点时,我正在发送的对象是空的。如果我将控制器更改为基于ApiController,post将正常工作,并获得预期的数据。 public class NoteTypeController : ODataController (or ApiController)
{
[EnableQuery(AllowedQueryOptions=Al
对于使用OData的Web,我使用默认的MVC帮助页,但是如果我继承了ODataController而不是ApiController,那么帮助页就不会生成。它是空白的。只有从ApiController继承的类才会出现在帮助页上。
public class BaseApiController : ApiController
工作正常,并在帮助页中生成
public class BaseApiController : ODataController
即使ODataController从ApiController继承,也不会生成帮助页
有什么想法吗?谢谢
我一直在使用web 2和OWIN开发一个RESTful Web服务。最初,我的控制器继承自ApiController,GET操作支持OData过滤/查询,即标记为EnableQuery。
我们现在决定研究公开一个真正的OData服务是否可行,因此让控制器继承ODataController而不是ApiController。虽然这在很大程度上似乎运行良好,但$select已不再起作用。
public class BaseController : ODataController
{
... some properties here, not related to issue...
}
p
我尝试创建一个BaseController,它应该包含一个DbContest实例。
public abstract class BaseODataController<T> : ODataController where T : class
{
protected readonly ApplicationDbContext _db;
public BaseODataController(ApplicationDbContext db)
{
_db = db;
}
}
因此,当我创建一个新的控制器时,我必须通过构造函数传递DbCont
为了在我的Web中保持一个概述,我使用了一个基本控制器,它包含了大多数其他控制器使用的一些基本操作。(例如,添加新项的Post([FromBody]JObject newFields)。)
在我的项目中,我启用了属性路由。因此,我的基本控制器看起来有点像以下内容:
public class BaseController<T> : ApiController where T : ObjectBase, new()
{
[Route("")]
[ResponseType(typeof(ObjectBase))]
public virtual IH
我有两个基本控制器:
public class FirstBaseController : ApiController {}
public class SecondBaseController : ODataController {}
我还有一个用于调试的全局过滤器,我需要进行属性注入才能传入log4net。
我尝试通过执行以下操作为两个控制器注册过滤器:
builder.RegisterType<DebugAttribute>()
.AsWebApiFilterFor<FirstBaseController>()
.AsWebApiFilterFor<S
我正在学习Web,并遇到了以下问题。类似于。
我的例外是,在Chrome中仍然返回为,而在IE中返回为JSON。这些异常在从ODataController继承时以XML形式抛出,但在从ApiController继承时正确抛出为JSON。
我的WebApiConfig课程:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.Filters.Add(new NotImplementedExceptionFilterAttribute
我有一些实体,其中的数据必须只有一些用户才能访问。
public class Foo
{
public virtual Bar { get; set; }
...
}
public class Bar
{
public string Secret { get; set; }
...
}
例如,Bar.Secret必须只能由UserA访问,而不能由UserB访问。我可以这样做:
public class BarsController : ODataController
{
[EnableQuery]
public IHttpActionResul
我在[EnableQuery]中使用WebAPI2.2,如下所示:
public class ProductsController : ApiController
{
private MyContext db = new MyContext();
[EnableQuery]
public IQueryable<Product> GetProducts()
{
return db.Products;
}
}
一旦我使用了CamelCasePropertyNamesContractResolver,我想执行这样的OData查询
我在Web 2中创建了OData 4控制器,如下所示:
public class BooksController : ODataController
{
private ICollection<Book> books;
public BooksController()
{
this.books = new Collection<Book>()
{
new Book() { Id = "1", Title = "B1", Price = new Money(1
我在VS2013下有一个OData V3 C#项目,我想在运行时在一个单独的类库中加载/注入一个ODataController,并让该服务有一个路由。问题是我无法获得要解析到控制器的路由。例如
"No type was found that matches the controller named 'TestsController'"
下面是我的控制器在单独的类库中的样子:
namespace WebApi.Extensions
{
public class TestsController : ODataController
{
var t =
我需要一个API来将我的所有DB表公开为一个OData API,为此,我使用了脚手架数据库来生成所有现有的模型,并且我已经成功地使用反射创建了一个正确的EDM模型,供OData使用。我还创建了一个泛型控制器,可以用作每个模型的基本控制器。看起来是这样的:
public class GenericController<TEntity> : ODataController
where TEntity : class, new()
{
private readonly DbContext _context;
public Gener
我很难将OData v4查询支持添加到从ApiController而不是ODataController继承的控制器上的方法中。虽然我在解决方案中有一个工作的OData模型,但是有些端点并不真正属于模型,但是查询的功能将是有用的。
我看过一些文章,建议我只返回一个IQueryable并使用EnableQuery。
下面是我的示例代码:
public class TestController : ApiController
{
[HttpGet]
[EnableQuery]
public IQueryable<TestObject> Events()
我正在编写一个API控制器,用于接收和解析JSON异步post的内容,但无法读取该post中的StringContent对象的内容。
这是我的API控制器中的部分,我希望在其中看到该值。到达ApiController方法的值为空。jsonContent值是一个空字符串。我期望看到的是JSON对象的内容。
public class ValuesController : ApiController
{
// POST api/values
public void Post([FromBody]string value)
{
HttpContent reque
在这种情况下,我有了一个baseController for webApi,并跟踪到了这个问题。如果我有一个基控制器,它有一个输入参数类型的对象,它将以http 500多个操作结束。
这是一个默认的空mvc 4.0项目,用于vs 2012,使用IISExpress
public class BaseSecureApi : ApiController
{
public string Wtf(object ohMyGodThisIsSilly)
{
return null;
}
}
和控制器
public class Default1Controller