веб-проект aspnetcore импортирует контроллер другого проекта

#c# #asp.net-core

#c# #asp.net-core

Вопрос:

csproj и версия двух проектов :

Веб-проект AspNetCore

 <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>


  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
  </ItemGroup>


  <ItemGroup>
    <ProjectReference Include="..ControllerController.csproj" />
  </ItemGroup>
</Project>
  

Проект контроллера

 <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App"/>
  </ItemGroup>
</Project>
  

введите описание изображения здесь

Код проекта контроллера

 using Microsoft.AspNetCore.Mvc;

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return Content("Hello S.O");
    }
}

  

Вопрос

если запустить веб-проект AspNetCore, он получит HTTP ERROR 404 , как мне успешно ссылаться на него?

Комментарии:

1.У меня была такая же проблема, когда я размещал приложение через TestHost, обходным путем было добавление сборки, содержащей контроллеры, вручную в Startup.cs service.AddMvc().AddApplicationPart(typeof(HomeController).Assembly);

2. @khoroshevj вы можете ответить ниже, это ответ.

Ответ №1:

У меня была такая же проблема, когда я размещал приложение через TestHost, обходным путем было добавление сборки, содержащей контроллеры, вручную в Startup.cs.

 service.AddMvc()
    .AddApplicationPart(typeof(HomeController).Assembly);
  

Комментарии:

1. Это хороший ответ, но это странно, потому что у меня он работает без добавления этой строки. В чем может быть причина?

2. Новая модель хостинга может быть причиной проблемы в этом случае, но я не уверен

3. @ITWeiHan, добавляю пакет nuget Microsoft.AspNetCore.MVC в ваш TestWeb. Проект инфраструктуры вместо Microsoft.NETCore.App позволяет ему работать без строки, приведенной в приведенном выше ответе. Я использовал AspNetCore. MVC с моей стороны, когда я пытался, следовательно, это сработало.

4. @Priyank Panchal да! это ответ без кода редактирования. вы можете изменить приведенный ниже свой ответ.

5. Согласно @PriyankPanchal ответ InProcess не имеет к этому никакого отношения. отредактировал мой ответ

Ответ №2:

Я предполагаю, что ваша ссылка на проект в AspNetCore.csproj указывает на неправильный путь.

Пожалуйста, попробуйте изменить

 <ProjectReference Include="..ControllerProjectController.csproj" />
  

Для

 <ProjectReference Include="..ControllerController.csproj" />
  

Редактировать

Использование пакета nuget Microsoft.AspNetCore.MVC вместо Microsoft.NETCore.App должно решить проблему без необходимости редактировать startup.cs файл. Но я лично предпочел бы решение, предоставленное @khoroshevj

Комментарии:

1. извините, мне жаль, что я допустил ошибку, это исправило вопрос. вопрос не в названии