it-swarm.com.de

Es wurde kein Dienst für den Typ 'Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory' registriert

Ich habe dieses Problem: Kein Dienst für den Typ "Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory" wurde registriert. In asp.net core 1.0 scheint es, als wenn die Aktion versucht, die Ansicht zu rendern, ich diese Ausnahme habe.

Ich habe viel gesucht, aber ich habe keine Lösung dafür gefunden. Wenn mir jemand helfen kann herauszufinden, was passiert und wie kann ich das Problem beheben? Ich werde es schätzen.

Mein Code unten:

Meine project.json datei

{
  "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%" ]
  }
}

Meine Startup.cs -Datei

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?}");
        }
    }
}
26

Lösung: Verwenden Sie AddMvc() anstelle von AddMvcCore() in Startup.cs und es wird funktionieren.

Weitere Informationen zu diesem Thema finden Sie in dieser Ausgabe: 

Für die meisten Benutzer gibt es keine Änderungen und Sie sollten .__ weiterhin verwenden. AddMvc () und UseMvc (...) in Ihrem Startcode.

Für die wirklich Mutigen gibt es jetzt ein Konfigurationserlebnis, bei dem Sie kann mit einer minimalen MVC-Pipeline beginnen und Funktionen hinzufügen, um eine .__ zu erhalten. individuelle Rahmenbedingungen.

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

Sie müssen möglicherweise auch einen Verweis ToMicrosoft.AspNetCore.Mvc.ViewFeature in project.json hinzufügen.

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

40
Jonas Stensved

Wenn Sie 2.0 verwenden, verwenden Sie services.AddMvcCore().AddRazorViewEngine(); in Ihrer ConfigureServices.

Denken Sie auch daran, .AddAuthorization() hinzuzufügen, wenn Sie das Authorize-Attribut verwenden, sonst funktioniert es nicht.

17
CoOl

Verwenden Sie für .NET Core 2.0 in ConfigureServices Folgendes:

services.AddNodeServices();
1
chaosifier

Ich weiß, dass dies ein alter Beitrag ist, aber es war mein bestes Google-Ergebnis, als ich darauf stieß, nachdem ich ein MVC-Projekt auf .NET Core 3.0 migriert hatte. Mach mein Startup.cs sieh mal so aus das es für mich behoben ist:

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();
        });
    }
}
0
Brandon Johnson

Fügen Sie einfach folgenden Code hinzu und es sollte funktionieren: 

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

        }
0
Sudhir Jain

Sie verwenden dies in startup.cs

services.AddSingleton<PartialViewResultExecutor>();
0
Tufy Duck

Dieser funktioniert für meinen Fall: 

services.AddMvcCore()
.AddApiExplorer();
0
Saurin Vala

Wenn Sie dieses Problem während des .NetCore 1.X -> 2.0-Upgrades erhalten, aktualisieren Sie Ihren Program.cs und 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
    }
}
0
ono2012