Я с ума схожу с этим.Контроллеры Api работают, но сетевые контроллеры бритвы не с owin
Я разрабатываю проект ASP.NET Web Api 2.2 с Visual Studio 2012 Premium, .NET Framework 4.5.1 и C#.
Я создал пустой проект ASP.NET MVC 5
. Я удалил Global.asax
и создать этот Startup.cs
класс:
using Microsoft.Owin;
using Ninject;
using Ninject.Web.Common.OwinHost;
using Ninject.Web.WebApi.OwinHost;
using Owin;
using System.Reflection;
using System.Web.Http;
using System.Web.Routing;
using MyProject.Web.API.App_Start;
[assembly: OwinStartup(typeof(MyProject.Web.API.Startup))]
namespace MyProject.Web.API
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
RouteConfig.RegisterRoutes(RouteTable.Routes);
var webApiConfiguration = new HttpConfiguration();
webApiConfiguration.Routes.MapHttpRoute(
name: "Default",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
webApiConfiguration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
webApiConfiguration.Routes.MapHttpRoute(
name: "ProductionOrderActionApi",
routeTemplate: "api/MyProductionOrders/{orderNumber}/{action}",
defaults: new { controller = "MyProductionOrders" });
app.UseNinjectMiddleware(CreateKernel);
app.UseNinjectWebApi(webApiConfiguration);
}
private static StandardKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
RegisterServices(kernel);
return kernel;
}
private static void RegisterServices(IKernel kernel)
{
var containerConfigurator = new NinjectConfigurator();
containerConfigurator.Configure(kernel);
}
}
}
Проект отлично с ApiController классов работает, но когда я пытаюсь получить доступ к Controller я получаю HTTP 404 код Статус: не найден.
Что мне нужно сделать, чтобы разрешить веб-страницы? Я думаю, проблема связана с Routes
, но я попытался добавить RouteConfig
к проекту, но я не знаю, как это сделать.
Я много искал в Google, но я не нашел ничего, связанного с моим вопросом (или, возможно, я не поставил правильный поисковый запрос).
Если вам нужен класс NinjectConfigurator
, пожалуйста, сообщите мне, и я добавлю его.
Что Ссылка 404ing? – rism
Если это не так глупо, потому что вы определили RouteConfig.RegisterRoutes (RouteTable.Routes); в верхней части Startup.Configuration, а затем в RegisterRoutes у вас по-прежнему есть маршрут по умолчанию, тогда любой вызов, чтобы сказать api/MyProductionOrders/{orderNumber}, будет поднят по этому маршруту контроллера по умолчанию ... поэтому я бы переместил RouteConfig.RegisterRoutes (RouteTable.Routes) ниже параметров webApiConfiguration.Routes .....но тогда вы говорите, что маршруты api попадают, но не контроллеры, поэтому это не должно быть проблемой. – rism
Основываясь на днях попыток, это выглядит как * none * ответов на самом деле работает при запуске Self Hosted .... –