我使用MVC5和ASP.NET 4.5创建了一个简单的Web应用程序。使用该Web应用程序作为启动项目在本地运行时工作正常。我正在尝试将其转换为OWIN自托管应用程序,因此我在项目中添加了一个Console程序,并将其设置为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();
}
}
}
这样运行正常,不会触发任何错误。但是,当我尝试访问该URL时,我得到的只是一个空白页面,实际上是一个404错误页面(我在页面中没有任何内容,但查看网络跟踪,我看到响应是404)
这是WebApp的Startup类:
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项目所需的内容。
答案 0 :(得分:5)
您不能将自托管OWIN与MVC 5一起使用。这是目前MVC的限制之一。 MVC 6完全解决了这个问题。 MVC 5对System.Web和IIS管道有很深的依赖性,这使得它不适合运行自托管。您需要等待MVC 6,或者在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上运行。