Я использую ASP.NET Core 1.0.1. У меня есть следующийЗагрузка и регистрация API-контроллеров из библиотеки классов в ядре ASP.NET
- библиотека классов, которая использует
"Microsoft.AspNetCore.Mvc": "1.0.1"
для того, чтобы развивать свои контроллеры:
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)
{
}
}
}
Это project.json моего класса libray в:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.1",
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
- Основное приложение Asp.net (шаблон веб-API), на котором будут размещаться мои контроллеры и ссылка , что библиотека классов. Тем не менее, он никогда не попадает в точку останова в контроллере . Вот мой класс запуска в веб-приложении:
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();
}
}
}
Я также проверил, если контроллер был введен:
Итак, чего не хватает?
Попробуйте заменить 'typeof (ValuesContoller) .GetTypeInfo(). Assembly' для' typeof (ValuesContoller) .Assembly' –
Это недопустимый метод или расширение. – Coding
Этот метод доступен для меня. Можете ли вы обновить свой вопрос с помощью своего полного Startup.cs? –