2017-11-08 3 views
0

これは、ASP.NETコアルーティングについての記事です: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routingASP .NETのコアルーティング

それは単純です。

app.UseMvc(routes => 
{ 
    routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); 
}); 

それとも私はこのような属性を持つ私のコントローラとアクションをマークすることができます:私はこのような経路を指定するか

[Route("api/[controller]")] 
public class TestController : Controller 
{ 
    [HttpGet("{id}")] 
    public async Task<string> Get(string id) 
    { 
     return "test"; 
    } 
} 

しかし、私は属性を持つ外部のライブラリにコントローラを入れてみましたが、私のメインサービスからそのアセンブリを参照し、私がUrlを打ち込むと、コールはコントローラにルーティングされません。私はASP.NETコアにどのアセンブリをスキャンするかを伝える必要があると推測していますが、どのようにすればよいか分かりません。私はこのURLを使用しています。http://localhost:5000/api/test/a

答えて

0

外部アセンブリを参照するだけで、そのタイプが明示的に使用されていない場合、アセンブリは実際にロードされず、asp.netコアはその中のコントローラを検出する機会を持ちません。あなたは

ExternalControllerがあなたの外部ライブラリからのコントローラである
var t = typeof(ExternalController); 

のような単純なもので、スタートアップルーチンを更新することができ、外部アセンブリの読み込みを強制し、あなたの問題を解決するために

+0

ありがとうございました。私はすでにこれを試しましたが、私の問題は解決しませんでした。ルーティングを処理するまでにアプリドメインにアセンブリが存在することを確認するために、スタートアップルーチンのどの部分がこれを行う必要がありますか。 –

+0

奇妙な、私はこれを試して、それは正常に動作します。ルートが構成されているStartup.Configure()に追加してください。 – CodeFuller

+0

ありがとうございます。私はこれを試みたが、それはまだ動作しません。 –