Подтвердить что ты не робот

Не зарегистрировано ни одного сервиса для типа "Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory"

У меня возникла эта проблема: Нет службы для типа "Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory". В asp.net core 1.0 кажется, что когда действие пытается для отображения представления у меня есть это исключение.

Я много искал, но я не нашел для этого решения, если кто-то может помочь мне разобраться, что происходит, и как я могу его исправить, я по достоинству оценю его.

Мой нижеследующий код:

Мой файл project.json

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"

    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.Commands": "7.0.0-rc1-final"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Мой файл Startup.cs

using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using OdeToFood.Services;

namespace OdeToFood
{
    public class Startup
    {
        public IConfiguration configuration { get; set; }
        // 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 http://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddScoped<IRestaurantData, InMemoryRestaurantData>();
            services.AddMvcCore();
            services.AddSingleton(provider => configuration);
        }

        // 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)
        {

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            //app.UseRuntimeInfoPage();

            app.UseFileServer();

            app.UseMvc(ConfigureRoutes);

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }

        private void ConfigureRoutes(IRouteBuilder routeBuilder)
        {
            routeBuilder.MapRoute("Default", "{controller=Home}/{action=Index}/{id?}");
        }
    }
}
4b9b3361

Ответ 1

Решение: Используйте AddMvc() вместо AddMvcCore() в Startup.cs, и он будет работать.

Пожалуйста, просмотрите этот вопрос для получения дополнительной информации о том, почему:

Для большинства пользователей изменений не будет, и вы должны продолжать использовать AddMvc() и UseMvc (...) в вашем стартовом коде.

Для действительно храбрых, теперь есть опыт настройки, где вы может начинаться с минимального конвейера MVC и добавлять функции для получения настраиваемая структура.

https://github.com/aspnet/Mvc/issues/2872

Вам также может потребоваться добавить ссылку до Microsoft.AspNetCore.Mvc.ViewFeature в project.json

https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.ViewFeatures/

Ответ 2

Если вы используете 2.0, используйте services.AddMvcCore().AddRazorViewEngine(); в ConfigureServices

Также не забудьте добавить .AddAuthorization(), если вы используете атрибут Authorize, иначе он не будет работать.

Ответ 3

Для .NET Core 2.0 в ConfigureServices используйте:

services.AddNodeServices();

Ответ 4

Просто добавьте следующий код, и он должен работать:

   public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvcCore()
                    .AddViews();

        }

Ответ 5

Для тех, кто получает эту проблему во время обновления .NetCore 1.X → 2.0, обновите оба Program.cs и Startup.cs

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

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

public class Startup
{
// The appsettings.json settings that get passed in as Configuration depends on 
// project properties->Debug-->Enviroment Variables-->ASPNETCORE_ENVIRONMENT
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

        services.AddTransient<IEmailSender, EmailSender>();

        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
    // no change to this method leave yours how it is
    }
}

Ответ 6

Это работает для моего случая:

services.AddMvcCore()
.AddApiExplorer();

Ответ 7

Я знаю, что это старый пост, но это был мой лучший результат в Google, когда я столкнулся с этим после переноса проекта MVC в .NET Core 3.0. То, что мой Startup.cs выглядел так, исправило это для меня:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

Ответ 8

Вы используете это в startup.cs

services.AddSingleton<PartialViewResultExecutor>();

Ответ 9

Чтобы иметь возможность возвращать данные JSON, необходимо зарегистрировать JsonFormatterServices в контейнере внедрения зависимостей. Метод AddMvc() делает это, но не метод AddMvcCore(). Вы можете убедиться в этом, посмотрев исходный код на странице ASP.NET Core MVC Github.