Vielleicht machst du etwas falsch. Also, hier sind die Schritte, damit das funktioniert.
- Erstellen Sie ein neues Projekt:ASP.NET Core-Webanwendung (.NET Core);
- Wählen Sie die Web-API-Vorlage aus;
- Führen Sie das Projekt aus und greifen Sie auf "api/values" zu, um sicherzustellen, dass es funktioniert;
- Fügen Sie der Lösung ein neues Projekt mit dem Namen ClassLibrary hinzu:Klassenbibliothek (.NET Core);
- Löschen Sie Class1.cs und erstellen Sie eine TestController.cs-Klasse;
-
Fügen Sie die MVC-Abhängigkeit in project.json aus dem ClassLibrary-Projekt hinzu:
"dependencies": { "NETStandard.Library": "1.6.0", "Microsoft.AspNetCore.Mvc": "1.0.0" },
-
Aktualisieren Sie Ihre TestController.cs wie folgt:
[Route("api/[controller]")] public class TestController : Controller{ [HttpGet] public IEnumerable<string> Get() { return new string[] { "test1", "test2" }; } }
-
Fügen Sie die Referenz zu ClassLibrary in Ihrem WebAPI-Projekt hinzu:Klicken Sie mit der rechten Maustaste auf "Referenzen" -> "Referenz hinzufügen ..." oder aktualisieren Sie Ihre project.json wie folgt:
"dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" }, "Microsoft.AspNetCore.Mvc": "1.0.0", "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", "Microsoft.Extensions.Configuration.Json": "1.0.0", "Microsoft.Extensions.Logging": "1.0.0", "Microsoft.Extensions.Logging.Console": "1.0.0", "Microsoft.Extensions.Logging.Debug": "1.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", "ClassLibrary": "1.0.0-*" },
-
Aktualisieren Sie Ihre Startup.cs
ConfigureServices
Methode:public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddApplicationPart(Assembly.Load(new AssemblyName("ClassLibrary"))); }
- Führen Sie das Projekt erneut aus und greifen Sie auf "api/test" zu;
Sie müssen in Startup.cs der Haupt-Webanwendung nichts Besonderes tun, es muss nur auf die Klassenbibliothek verwiesen werden.
Der einzige Trick besteht darin, dass Ihre Klassenbibliothek direkt auf MVC im Abhängigkeitsabschnitt der project.json-Datei verweisen muss, damit Ihre Controller erkannt werden:
"Microsoft.AspNetCore.Mvc": "1.0.*"
UPDATE:Für die MVC-App brauchte ich nichts Besonderes in meinem Startup, aber in einer meiner API-Apps brauchte ich es vielleicht, weil ich Attribut-Routing verwendete.
services.AddMvc()
.AddApplicationPart(Assembly.Load(new AssemblyName("CSharp.WebLib")))
;
wobei CSharp.WebLib der Name meiner Klassenbibliothek ist