2016-11-03 7 views
1

実行時に別のクラスライブラリにODataControllerをロード/注入してそのサービスをルートにしたいVS2013の下にOData V3 C#プロジェクトがあります。問題は、コントローラに解決するためのルートを取得できないことです。例えば実行時にOData V3コントローラを追加する - コントローラが見つかりません

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()); 

} 

誰が、なぜ見ることができます:私はこれを持って

namespace WebApi.Extensions 
{ 
    public class TestsController : ODataController 
    { 
    var t = "some string"; 

    public IHttpActionResult Get(ODataQueryOptions<Test> queryOptions) 
    { 
     ... 
    } 
    } 
} 

そして、私のWEBAPIレジスタ()メソッドで:http://localhost/odata/Tests

"No type was found that matches the controller named 'TestsController'" 

は、ここに私のコントローラは、別のクラスライブラリで次のようになります。私はコントローラクラスに解決するためのルートを取得できませんか?私はそれを一緒にフックするものを逃していますか?

答えて

0

私は見つからなかったものを見つけました。あなたは、本質的にあなたをあなた自身を書いて、あなたは(IISの下でホスティング場合)、自動的にbinディレクトリから持ち上げているアセンブリのリストを取るカスタムDefaultAssembliesResolverを登録し、どんなディレクトリから独自のアセンブリを追加

Customizing controller discovery in ASP.Net

欲しいです。

注:上記リンクの投稿されたソースコードにはバグがあります。ブログのコメントを見てください。

関連する問題