15

我只是想让服务堆栈在 mvc4 项目下运行。ServiceStack.Host.Mvcnuget 包是否适用于 mvc 4.0 ?我安装了它并将它添加routes.IgnoreRoute("api/{*pathInfo}");到路由配置中,但是当我去的时候它没有找到路由

/api/metadata

我得到了错误:

未找到与请求 URI“ http://localhost:51681/api/metadata ”匹配的 HTTP 资源。

4

3 回答 3

15

找到了解决方案。每当我们创建新的 asp.net mvc4 项目时,它都带有 Asp.Net Web Api。这也有路径 api/. 我不需要两者都在一起,所以只需使用 nuget 包管理器删除这些模块,它就会像任何东西一样工作。

如果您仍然卡在任何地方,请告诉我。因为它现在正在使用 asp.net mvc4 为我工作。

于 2012-10-09T09:39:10.057 回答
10

在安装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 的 wiki 文档中缺少某些内容,请随时添加它们,因为它们是由 ServiceStack 社区维护并为 ServiceStack 社区维护的社区 wiki 文档。

向 aspnetwebstack 团队询问禁用 WebApi 的更简单方法

我们已经向 aspnetwebstack 团队提出了请求,他们是否可以提供一种更简单且自动化的方式来通过 Nuget 禁用 WebApi,请随时通过评论功能请求来表示您对该功能的支持。

完整的 README.txt 说明

为了使 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 和包含的服务:

于 2013-03-27T04:09:22.517 回答
1

我是使用服务堆栈的新手,我也使用 MVC 4 应用程序,@mythz 的答案是正确的。但对于

routes.IgnoreRoute("api/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); //Prevent exceptions for favicon

放置在 AppStart/RouteConfig.cs

我的应用程序运行良好:D

于 2013-09-03T04:59:44.617 回答