Самостоятельно размещенное приложение ядра 2.2 для ASp.net. Представление «Индекс» не найдено.В следующих местах были найдены - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю веб-приложение ASP.NET Core и размещаю его через консоль.

Я использую IdentitySvr4 Quick Start UI и получаю все файлы в свой проект.

Console Application

Теперь, когда я запускаю сервер с помощью консоли и вижу http://localhost:44322/, Я получаю сообщение об ошибке,

InvalidOperationException: Представление «Индекс» не найдено.Были найдены следующие местоположения:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml
/Pages/Shared/Index.cshtml

У меня естьсоздал этот проект как консольное приложение и добавил все нюгеты по пути.

Веб-сервер запускается и прослушивает порт, но каким-то образом механизм представления не понимает.

Основная программа:

class Program
{
        static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args).UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseUrls("http://*:44322")
            .UseStartup<Startup>();
}

Класс запуска:

public class Startup
{

        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            var signingCertificate = new X509Certificate2(Helpers.GetCertificate());
            services.AddIdentityServer()
                .AddSigningCredential(new X509Certificate2(signingCertificate))
                .AddTestUsers(InMemoryConfiguration.Users().ToList())
                .AddInMemoryClients(InMemoryConfiguration.Clients().ToList())
                  .AddInMemoryApiResources(InMemoryConfiguration.ApiResources());

            services.AddMvc();


        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole();

            app.UseDeveloperExceptionPage();

            app.UseIdentityServer();

            app.UseStaticFiles();

            app.UseMvcWithDefaultRoute();

        }
}

1 Ответ

0 голосов
/ 22 февраля 2019

Обычно я бы не отвечал на свой вопрос, а просто добавил комментарий, но я думаю, что это избавит разработчиков от больших усилий и боли.

Это было просто,

Я редактировал.csproj с Notepad ++ и нашел следующие настройки:

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="IdentityServer4" Version="2.3.2" />
    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
  </ItemGroup>

</Project>

После ссылки на веб-проект просто измените его на веб-проект, изменив корень с "Microsoft.NET.Sdk" на "Microsoft.NET.Sdk.Web"

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="IdentityServer4" Version="2.3.2" />
    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
  </ItemGroup>

</Project>

И это все.Не уверен, почему вся логика приложения будет зависеть от типа проекта (поскольку он может быть размещен где угодно), но работает как шарм.

...