2017-10-23 10 views
0

私はそこからモデルを再利用するために、別のAspコアプロジェクトを指すcsprojファイルのProjectReferenceを使用しています。ProjectReferenceからのコントローラーアクション

<Project Sdk="Microsoft.NET.Sdk.Web"> 
    <PropertyGroup> 
    <TargetFramework>net461</TargetFramework> 
    <UserSecretsId>HIDDEN</UserSecretsId> 
    <PreserveCompilationContext>true</PreserveCompilationContext> 
    </PropertyGroup> 

    <ItemGroup> 
    <ProjectReference Include="..\..\Project1\Project1.csproj" /> 
    </ItemGroup> 
... 
</Project> 

しかし、これにより、最初のプロジェクトのコントローラアクションが2番目のプロジェクトで使用できるようになります。 configureメソッドのapp.UseMvcが最初のプロジェクトのすべてのコントローラを見つけるようです。私は両方のプロジェクトでは、コントローラの同じ名前を持つ場合

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

また、次のエラーを取得イム:

AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:

は、どのような方法は、それを参照する際の最初のプロジェクトからコントローラのアクションをブロックありますか?または、それをブロックするためにUseMvcのいくつかのオプションをmabyですか?

答えて

0

はい。これはどのように動作するのですか?使用可能なすべてのアセンブリのすべてのコントローラが収集され、ルーティングフレームワークに供給されます。そのプロジェクトのコントローラーが参照されないようにするには、最も単純で最も論理的な方法は、それらを参照しないことです。モデルをクラスライブラリに移動してから、必ずしも共有する必要のないコントローラやその他のものを含む完全なMVCプロジェクトではなく、そのクラスライブラリのみを参照してください。

関連する問題