2015-04-07 3 views
4

Я создал простое веб-приложение с использованием MVC5 и ASP.NET 4.5. Использование этого веб-приложения в качестве стартового проекта прекрасно работает при запуске локально. Я пытаюсь преобразовать это в автономное приложение OWIN, поэтому я добавил в проект консольную программу и установил ее как проект запуска в Visual Studio (я использую Community 2013).MVC5 self-hosted OWIN возвращает 404

Это мой класс Программа:

class Program 
    { 
     static void Main(string[] args) 
     { 
      using (Microsoft.Owin.Hosting.WebApp.Start<WebApp.Startup>("http://localhost:9000")) 
      { 
       Console.WriteLine("Press [enter] to quit..."); 
       Console.ReadLine(); 
      } 
     } 
    } 

Это прекрасно работает и не вызывает каких-либо ошибок. Однако, когда я пытаюсь достичь этого URL-адреса, все, что я получаю, это пустая страница, которая на самом деле является страницей ошибок 404 (у меня нет содержимого на странице, но, глядя на трассировку сети, я вижу, что ответ равен 404) ,

Это класс Запуска WebApp:

public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888 
     } 
    } 

Да, это пустое, потому что я не так много сделать (нет обновлений аутентификации или схемы базы данных для запуска). Я уверен, что мне не хватает чего-то очевидного, но я не могу найти какую-либо статью с подробным описанием того, что необходимо для правильного подключения OWIN к проекту MVC5.

ответ

5

Вы не можете использовать самостоятельный хостинг OWIN с MVC 5. Это одно из ограничений MVC, в настоящее время. MVC 6 полностью решает эту проблему. MVC 5 имеет глубокие зависимости от конвейера System.Web и IIS, что делает его непригодным для самостоятельной работы. Вам нужно либо дождаться MVC 6, либо использовать OWIN поверх IIS или IIS Express.

Когда MVC 6 кораблей, вы будете в состоянии сделать что-то похожее на это:

public class Startup 
{ 
    public void Configure(IApplicationBuilder app) 
    { 
     app.UseMvc(); 
    } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc(); 
    } 
} 

Другие веб-платформы, как WebAPI 2+ и SignalR 2, уже сделали этот переход от Зависимость System.Web и может работать на автономном OWIN.