嘿,您知道如何在桌面上运行没有IIS或IIS Express的MVC 5项目吗?
在ASP.NET vNext中有一个WebListener可以实现,但是我无法将我的项目重新组织到ASP.NET vNext。
是否有可能运行MVC 5项目以及ASP.NET vNext?
答案 0 :(得分:3)
看起来不像其他答案实际上回答了你的问题。简短的回答是不,你不能自己主持MVC 5,因为它依赖于IIS。如果您需要自托管Web应用程序,则必须将现有应用程序移植到例如Nancy,或者等待MVC 6的发布,而MVC 6确实可以自托管。或者,您可以查看Web Api,其中当前版本也可以自托管。
答案 1 :(得分:0)
看看OWIN。它允许在您自己的应用程序中实例化您自己的小型Web服务器。
这已经通过WebApp.Start()
方法在.Net框架中提供。
您只需创建一个包含匹配Configuration
方法的类,该方法填满IAppBuilder
,然后您就完成了。
public class OwinStartup
{
private static IDisposable _Server;
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.Insert(0, new JsonpFormatter());
appBuilder.UseWebApi(config);
}
public static void Start()
{
// If the Start() method throws an exception, the problem
// is a missing right. The url has to be registered somewhere
// deep down in windows and this is only allowed by the admin.
// But you can change this rule to allow this registration for
// anybody by running the below command within a command prompt
// with admin rights:
// netsh http add urlacl url=http://+:14251/ user=Everyone
// Depending on your OS language the group name can differ.
string baseAddress = "http://+:26575/";
try
{
_Server = WebApp.Start<OwinStartup>(url: baseAddress);
}
catch (HttpListenerException ex)
{
_Log.Message(Severity.Fatal, "Could not start web api listener.", ex);
_Log.Message(Severity.Notice, "This normally happens cause the application is not allowed to add a web listener.");
_Log.Message(Severity.Debug, "Open up a command prompt with admin rights and execute the following command: \"netsh http add urlacl url="+ baseAddress +" user=Everyone\"");
}
}
public static void Stop()
{
if(_Server != null)
{
_Server.Dispose();
_Server = null;
}
}
}