【问题标题】:Controller actions from ProjectReference来自 ProjectReference 的控制器操作
【发布时间】:2017-10-23 20:23:45
【问题描述】:

我在 csproj 文件中使用指向另一个 Asp Core 项目的 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>

但这会导致第一个项目中的控制器操作在第二个项目中可用。好像configure方法中的app.UseMvc找到了第一个项目中的所有控制器。

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

另外,如果我在两个项目中使用相同名称的控制器,我会收到以下错误:

AmbiguousActionException:匹配多个动作。以下操作匹配路线数据并满足所有约束:

在引用第一个项目时,有什么方法可以阻止控制器操作吗?或者可能在 UseMvc 中有一些选项来阻止它?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-2.0


    【解决方案1】:

    是的。这就是它的工作原理。收集来自所有可用程序集的所有控制器,然后将其馈送到路由框架中。如果您不希望引用该项目中的控制器,那么最简单和最合乎逻辑的方法是不引用它们。将模型移出类库,然后仅引用该类库,而不是完整的 MVC 项目,其中包括控制器和大量其他不一定要共享的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多