我只是想让服务堆栈在 mvc4 项目下运行。ServiceStack.Host.Mvc
nuget 包是否适用于 mvc 4.0 ?我安装了它并将它添加routes.IgnoreRoute("api/{*pathInfo}");
到路由配置中,但是当我去的时候它没有找到路由
/api/metadata
我得到了错误:
未找到与请求 URI“ http://localhost:51681/api/metadata ”匹配的 HTTP 资源。
我只是想让服务堆栈在 mvc4 项目下运行。ServiceStack.Host.Mvc
nuget 包是否适用于 mvc 4.0 ?我安装了它并将它添加routes.IgnoreRoute("api/{*pathInfo}");
到路由配置中,但是当我去的时候它没有找到路由
/api/metadata
我得到了错误:
未找到与请求 URI“ http://localhost:51681/api/metadata ”匹配的 HTTP 资源。
找到了解决方案。每当我们创建新的 asp.net mvc4 项目时,它都带有 Asp.Net Web Api。这也有路径 api/. 我不需要两者都在一起,所以只需使用 nuget 包管理器删除这些模块,它就会像任何东西一样工作。
如果您仍然卡在任何地方,请告诉我。因为它现在正在使用 asp.net mvc4 为我工作。
在安装ServiceStack.Host.Mvc NuGet 包时的README.txt页面中,显示了使用 MVC 安装 ServiceStack 所需的说明,我们添加了额外的一行以支持 MVC4,因为它与冲突的 WepApi 捆绑在一起。
For MVC4 applications you also need to unregister WebApi, by commenting out this line:
//WebApiConfig.Register(GlobalConfiguration.Configuration);
我们也不喜欢必须提供手动安装说明以从 MVC4 的默认安装中禁用 WebApi,但不幸的是,这是我们目前可用可用的最好的方法。
如果您觉得ServiceStack 的 wiki 文档中缺少某些内容,请随时添加它们,因为它们是由 ServiceStack 社区维护并为 ServiceStack 社区维护的社区 wiki 文档。
我们已经向 aspnetwebstack 团队提出了请求,他们是否可以提供一种更简单且自动化的方式来通过 Nuget 禁用 WebApi,请随时通过评论功能请求来表示您对该功能的支持。
为了使 README 更易于搜索,我将在此处重复它们:
Global.asax.cs
在 ASP.NET MVC 中托管与在任何 ASP.NET 框架中托管非常相似,即 ServiceStack AppHost 仍然需要在您(或 WebActivator)中启动时进行初始化,例如:
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
您必须通过将以下行添加到 Global.asax 中的 MvcApplication.RegisterRoutes(RouteCollection) 来注册 ServiceStacks '/api' 路径:
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.09
元数据页面的 URL 和包含的服务:
我是使用服务堆栈的新手,我也使用 MVC 4 应用程序,@mythz 的答案是正确的。但对于
routes.IgnoreRoute("api/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); //Prevent exceptions for favicon
放置在 AppStart/RouteConfig.cs
我的应用程序运行良好:D