Asp.net mvc MVC5自托管OWIN返回404

Asp.net mvc MVC5自托管OWIN返回404,asp.net-mvc,owin,Asp.net Mvc,Owin,我使用MVC5和ASP.NET4.5创建了一个简单的web应用程序。在本地运行时,将该web应用程序用作启动项目可以很好地工作。我正在尝试将其转换为OWIN自托管应用程序,因此我向该项目添加了一个控制台程序,并将其设置为Visual Studio中的启动项目(我使用的是2013社区) 这是我的课程: class Program { static void Main(string[] args) { using (Microsoft.

我使用MVC5和ASP.NET4.5创建了一个简单的web应用程序。在本地运行时,将该web应用程序用作启动项目可以很好地工作。我正在尝试将其转换为OWIN自托管应用程序,因此我向该项目添加了一个控制台程序,并将其设置为Visual Studio中的启动项目(我使用的是2013社区)

这是我的课程:

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();
            }
        }
    }

是的,它是空的,因为我没有太多事情要做(没有要触发的身份验证或数据库模式更新)。我确信我遗漏了一些明显的东西,但我似乎找不到任何文章详细说明如何使OWIN正确连接到MVC5项目。

您不能将自托管OWIN与MVC 5一起使用。这是MVC目前的局限之一。MVC6完全解决了这个问题。MVC5对System.Web和IIS管道有很深的依赖性,这使得它不适合运行自托管。您需要等待MVC6,或者在IIS或IIS Express上使用OWIN

当MVC 6发布时,您将能够执行类似的操作:

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

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

其他web平台,如WebAPI 2+和SignalR 2,已经从System.web依赖性中进行了这种转换,并且可以在自托管OWIN上运行

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

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