Laden und registrieren API Controller Klasse Aus Bibliothek in ASP.NET Kern

Ich bin mit ASP.NET Kern 1.0.1. Ich habe Folgendes

  • Sie eine Bibliothek-Klasse verwendet "Microsoft.AspNetCore.Mvc": "1.0.1" zu entwickeln, um mein Controller:

HTML:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace CoreAPIsLibrary.Controllers
{

    [Route("api/[controller]")]
    public class ValuesContoller : Controller
    { 
        public string Get()
        {
            return "value";
        }

        //GET api/values/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }

        //POST api/values
        [HttpPost]
        public void Post([FromBody]string value)
        {
        }

        //PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody]string value)
        {
        }
    }
}

Dies ist meine class library-Projekt.json:

{
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "NETStandard.Library": "1.6.0"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}
  • Asp.net Kern-Anwendung (Web-API-Vorlage), wird meine host-Controller und Referenz
    die Klasse Bibliothek. Allerdings ist Es nie zuvor auf den break-Punkt in der
    controller. Hier ist meine startup-Klasse in der web-Anwendung:

HTML:

  using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System.Reflection;
using CoreAPIsLibrary.Controllers;

namespace APIsHost
{
    public class Startup
    {
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }

        public IConfigurationRoot Configuration { get; }

        //This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc()
              .AddApplicationPart(typeof(ValuesContoller).GetTypeInfo().Assembly).AddControllersAsServices();
        }

        //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(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseMvc(routes =>
            {
                routes.MapRoute("default", "{controller}/{action}/{id}");
            });
            //app.UseMvc();
        }
    }
}

Ich auch überprüft, ob der controller injiziert wurde:

Laden und registrieren API Controller Klasse Aus Bibliothek in ASP.NET Kern

So, was fehlt?

  • versuchen Sie ersetzen typeof(ValuesContoller).GetTypeInfo().Assembly für typeof(ValuesContoller).Assembly
  • Dieser ist nicht gültig, eine-Methode oder-Erweiterung.
  • Diese Methode für mich verfügbar ist. Können Sie aktualisieren Sie Ihre Frage mit Ihrem vollständigen Start.cs ?
  • Versuchen Sie, legen Sie [Route("api/[controller]")] im controller. Auch, versuchen, einen Domänencontroller zu erstellen, die in der gleichen Versammlung der app um sicherzustellen, dass die MVC ist in Ordnung.
  • Ich habe einen controller erstellt, in der Versammlung selbst aber nicht arbeiten auch. Ich habe mir nicht vorstellen. Was ist das problem?
  • Ich habe eine neue asp.net Kern (web-API) - Projekt getestet, ein controller in der gleichen assembly, es ist Arbeit. Dann löschte ich den Ordner Controller in der Web-App. und dann auf die Klasse library, und verändert die startup-Klasse der neuen Website. Aber es schlug nicht den controller noch. So, dies ist kein routing-Problem.
  • Ich denke, dann machst du etwas falsch. Ich bin gonna post eine Antwort mit den Schritten, um diese Arbeit zu machen.

Schreibe einen Kommentar