'Microsoft' 유형에 대한 서비스가 없습니다.AsNetCore.MVC.기능 보기.'ITempDataDictionaryFactory'가 등록되었습니다.
이 문제가 있습니다.'Microsoft' 유형에 대한 서비스가 없습니다.AsNetCore.MVC.기능 보기.'ITempDataDictionaryFactory'가 등록되었습니다.asp.net core 1.0에서는 액션이 뷰를 렌더링하려고 할 때 예외가 있는 것 같습니다.
제가 많이 찾아봤는데 해결책을 못 찾겠어요, 혹시 무슨 일이 일어나고 있고 어떻게 고칠 수 있는지 누가 좀 도와주시면 감사하겠습니다.
내 코드는 다음과 같습니다.
내 프로젝트.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?}");
}
}
}
솔루션:사용하다AddMvc()
대신에AddMvcCore()
에Startup.cs
효과가 있을 겁니다
다음과 같은 이유에 대한 자세한 내용은 이 문제를 참조하십시오.
대부분의 사용자는 변경 사항이 없으며 시작 코드에서 AddMvc() 및 UseMvc(...)를 계속 사용해야 합니다.
진정으로 용감한 사용자를 위해 최소한의 MVC 파이프라인으로 시작하여 맞춤형 프레임워크를 얻을 수 있는 기능을 추가할 수 있는 구성 환경이 제공됩니다.
다음에 대한 참조를 추가해야 할 수도 있습니다.Microsoft.AspNetCore.Mvc.ViewFeature
에project.json
https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.ViewFeatures/
사용 중인 경우2.x
그 다음에 사용services.AddMvcCore().AddRazorViewEngine();
당신의ConfigureServices
또한 추가하는 것을 기억하십시오..AddAuthorization()
을 사용하는 경우Authorize
속성, 그렇지 않으면 작동하지 않습니다.
업데이트:3.1
이후의 사용.services.AddControllersWithViews();
오래된 게시물인 것은 알지만 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();
});
}
}
.NET Core 3.1에서는 다음을 추가해야 했습니다.
services.AddRazorPages();
에ConfigureServices()
그리고 아래는Configure()
에Startup.cs
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
}
.NET Core 2.0의 경우 서비스 구성에서 다음을 사용합니다.
services.AddNodeServices();
솔루션:사용하다services.AddMvcCore(options => options.EnableEndpointRouting = false).AddRazorViewEngine();
Startup.cs 에 있으면 작동할 것입니다.
이 코드는 asp.net core 3.1(MVC)에 대해 테스트되었습니다.
2022년에 .NET 6.0을 사용하여
이 줄을 Program.cs 에 추가합니다.
var builder = WebApplication.CreateBuilder(args); //After this line...
builder.Services.AddRazorPages(); //<--This line
현재 저도 같은 문제가 있습니다. 저도 당신처럼 Add McvCore를 사용하고 있었습니다.오류 자체를 설명하기 위해 컨트롤러 추가를 추가했습니다.WithViews service to ConfigureServices 기능과 그것은 나에게 문제를 해결했습니다. (나는 여전히 AddMvcCore도 사용합니다.)
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddControllers();
services.AddControllersWithViews();
services.AddMvcCore();
//...
}
다음 코드를 추가하기만 하면 작동합니다.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddViews();
}
에서 이 문제가 발생하는 사용자를 참조하십시오.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
}
}
이건 내 경우에 효과가 있습니다.
services.AddMvcCore()
.AddApiExplorer();
당신은 startup.cs 에서 이것을 사용합니다.
services.AddSingleton<PartialViewResultExecutor>();
현재 VS 2022와 .NET 6를 사용하고 있습니다.
다음 줄은 설명한 대로 오류가 발생하여 전체 줄을 잘못 제거하려고 했지만 작동하지 않았습니다.문제가 되는 선:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
SetCompatibilityVersion 부분을 제거하는 것만큼 간단했습니다.
services.AddMvc()
언급URL : https://stackoverflow.com/questions/38709538/no-service-for-type-microsoft-aspnetcore-mvc-viewfeatures-itempdatadictionaryfa
'programing' 카테고리의 다른 글
Excel 날짜 형식 지정 (0) | 2023.07.15 |
---|---|
새 페이지로 리디렉션할 spx 페이지 (0) | 2023.07.15 |
Excel에서 SQL 실행이 임시 테이블을 사용할 수 없습니다. (0) | 2023.07.15 |
Ruby의 개체 속성별 고유한 특성 (0) | 2023.07.15 |
라즈베리 파이에서 운영체제 없이 C 프로그램을 실행하는 방법은 무엇입니까? (0) | 2023.07.15 |