我只是想让Service Stack在mvc4项目下运行。 ServiceStack.Host.Mvc
nuget包是否适用于mvc 4.0?我安装了它并将routes.IgnoreRoute("api/{*pathInfo}");
添加到路由配置中,但是当我去
/api/metadata
我收到错误:
找不到与请求URI匹配的HTTP资源 'http://localhost:51681/api/metadata'。
答案 0 :(得分:15)
找到解决方案。每当我们创建新的asp.net mvc4项目时,它都会附带Asp.Net Web Api。而且还有路径api /。我不需要你们两个,所以只需使用nuget包管理器删除那些模块,它就会像任何东西一样工作。
如果你仍然卡在任何地方让我知道。因为它现在正在使用asp.net mvc4。
答案 1 :(得分:10)
在安装README.txt的ServiceStack.Host.Mvc NuGet package页面中显示了使用MVC安装ServiceStack所需的说明,我们添加了一个extra line for support with MVC4,因为它与一个冲突的WepApi捆绑在一起。< / p>
For MVC4 applications you also need to unregister WebApi, by commenting out this line:
//WebApiConfig.Register(GlobalConfiguration.Configuration);
我们也不喜欢向disable WebApi from the default install of MVC4提供手动安装说明,但不幸的是,这是目前我们可以做的最好的事情。
如果您认为ServiceStack's wiki docs中缺少某些内容,请随意添加,因为它们是由ServiceStack社区维护的社区维基文档。
我们已经向aspnetwebstack团队请求他们是否可以提供easier and automated way to be able to disable WebApi via Nuget,请随时通过评论功能请求来表明您对此功能的支持。
为了使README更易于搜索,我将在此处重复:
ASP.NET MVC中的托管非常类似于在任何ASP.NET框架中托管,即ServiceStack AppHost仍需要在Global.asax.cs
(或WebActivator)启动时初始化,例如:
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
你必须注册ServiceStacks'/ api'路径,方法是将以下行添加到Global.asax中的MvcApplication.RegisterRoutes(RouteCollection):
routes.IgnoreRoute("api/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); //Prevent exceptions for favicon
将它们放在当前输入方法之前。
对于MVC4应用程序,您还需要通过注释掉这一行取消注册WebApi:
//WebApiConfig.Register(GlobalConfiguration.Configuration);
要启用Mini Profiler,请将以下行添加到Global.asax.cs中的MvcApplication中:
protected void Application_BeginRequest(object src, EventArgs e)
{
if (Request.IsLocal)
ServiceStack.MiniProfiler.Profiler.Start();
}
protected void Application_EndRequest(object src, EventArgs e)
{
ServiceStack.MiniProfiler.Profiler.Stop();
}
有关MiniProfiler的更多信息,请参阅https://github.com/ServiceStack/ServiceStack/wiki/Release-Notes
的v3.09Urls for metadata页面和包含的服务:
答案 2 :(得分:1)
我是新用的服务栈,我也使用MVC 4应用程序,答案@mythz是对的。 但是对于
routes.IgnoreRoute("api/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); //Prevent exceptions for favicon
放在AppStart / RouteConfig.cs
中我的应用程序运行良好:D