2017-06-08 5 views
0

ich ein Barebone-NET Core-Web-api Projekt erschaffe (Gestartet von leerer Vorlage unten) https://andrewlock.net/removing-the-mvc-razor-dependencies-from-the-web-api-template-in-asp-net-core/.NET-Core und Swagger API Generation

Der folgenden Code funktioniert gut, bis ich hinzugefügt Swashbuckle.AspNetCore (zusammen mit der Konfigurationscode unten), jetzt erhalten wir diesen Fehler

InvalidOperationException: Kein Service für den Typ 'Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionGroupCollectionProvider' wurde registriert.

Irgendwelche Ideen?

Bitte beachten Sie: Wir verwenden nicht "builder.AppMvc()", da wir versuchen, diese API so weit wie möglich zu verkleinern.

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 builder = services.AddMvcCore(); 

     builder.AddAuthorization(); 
     builder.AddFormatterMappings(); 
     builder.AddJsonFormatters(); 
     builder.AddCors(); 

     // Register the Swagger generator, defining one or more Swagger documents 
     services.AddSwaggerGen(c => 
     { 
      c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); 
     }); 
    } 

    // 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(); 

     if (env.IsDevelopment()) 
      app.UseDeveloperExceptionPage(); 



     app.UseMvc(); 


     // Enable middleware to serve generated Swagger as a JSON endpoint. 
     app.UseSwagger(); 

     // Enable middleware to serve swagger-ui (HTML, JS, CSS etc.), specifying the Swagger JSON endpoint. 
     app.UseSwaggerUI(c => 
     { 
      c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); 
     }); 
    } 
} 

[Route("api/[controller]")] 
public class ValuesController : ControllerBase 
{ 
    // GET api/values 
    [HttpGet] 
    public IActionResult Get() 
    { 
     return Ok(new[] {"value1", "value2"}); 
    } 
} 

Antwort

2

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

oder schreiben:

services.AddMvcCore().AddApiExplorer(); 

Diese Links helfen können:

No service for type 'Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory' has been registered

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/299

+0

Ich nehme an, Sie beziehe in meinem Code zu dieser Linie? var builder = services.AddMvcCore();“. – JCircio

+0

ich nicht AddMvc wie diese Fehler verwenden kann Dieses Projekt wurde von einem leeren WebAPI Code Projekt gestartet – JCircio

+0

Dann services.AddMvcCore versuchen() .AddApiExplorer();. –