在运行时添加OData V3控制器-找不到控制器
本文关键字:控制器 找不到 V3 OData 运行时 添加 | 更新日期: 2023-09-27 18:16:27
我在VS2013下有一个OData V3 c#项目,我想在运行时在单独的类库中加载/注入odatcontroller,并使该服务成为路由。问题是我无法将路由解析到控制器。例如http://localhost/odata/Tests
"No type was found that matches the controller named 'TestsController'"
下面是我的控制器在单独的类库中的样子:
namespace WebApi.Extensions
{
public class TestsController : ODataController
{
var t = "some string";
public IHttpActionResult Get(ODataQueryOptions<Test> queryOptions)
{
...
}
}
}
在我的WebApi Register()方法我有这个:
public static void Register(HttpConfiguration config)
{
var builder = new ODataConventionModelBuilder();
<lots of 'local' builder.EntitySet<***>("***") calls>
builder.EntitySet<Test>("Tests");
var assembly = Assembly.LoadFrom("<full path to classlib.dll>");
// test that we can find and load an instance
var type = assembly.GetType("WebApi.Extensions.TestsController");
var obj = Activator.CreateInstance(type);
// no errors so far. I can 'see' into 'obj'
config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel() );
}
有人知道为什么我不能得到路由解析到控制器类吗?我是不是漏掉了什么东西把它们连在一起?
我发现我错过了什么。
在ASP中定制控制器发现。净
你本质上是自己编写并注册一个自定义DefaultAssembliesResolver,在那里你可以从bin目录(如果托管在IIS下)中自动提取程序集列表,并从任何你想要的目录中添加你自己的程序集。
注意:上面链接中发布的源代码有一个错误。浏览博客评论