MVC4上的服务栈

use*_*621 15 asp.net-mvc servicestack asp.net-mvc-4

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

/api/metadata

我收到错误:

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

kun*_*jee 15

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

如果你仍然卡在任何地方让我知道.因为它现在正在使用asp.net mvc4.

  • 评论此行:"WebApiConfig.Register(GlobalConfiguration.Configuration);" 从Global.asax.cs也可以做到这一点. (6认同)

myt*_*thz 10

README.txt页面中,当您安装ServiceStack.Host.Mvc时,NuGet包显示了使用MVC安装ServiceStack所需的说明,我们添加了一个额外的行以支持MVC4,因为它捆绑了一个冲突的WepApi.

For MVC4 applications you also need to unregister WebApi, by commenting out this line:

    //WebApiConfig.Register(GlobalConfiguration.Configuration);
Run Code Online (Sandbox Code Playgroud)

我们也不喜欢提供手动安装说明来禁用默认安装的MVC4中的WebApi,但不幸的是,这是目前我们可以做的最好的.

ServiceStack docs是一个社区维基

如果您觉得ServiceStack的wiki文档中缺少某些内容,请随意添加它们,因为它们是由ServiceStack社区维护的社区维基文档.

要求aspnetwebstack团队更简单地禁用WebApi

我们已经从aspnetwebstack团队请求他们是否可以提供一种更简单,更自动的方式来通过Nuget禁用WebApi,可以通过评论功能请求来显示您对此功能的支持.

完整的README.txt说明

为了使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();
    }
}
Run Code Online (Sandbox Code Playgroud)

必须通过在Global.asax中将以下行添加到MvcApplication.RegisterRoutes(RouteCollection)来注册ServiceStacks/api'路径:

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

将它们放在当前条目之前的方法中.

对于MVC4应用程序,您还需要通过注释掉这一行来取消注册WebApi:

    //WebApiConfig.Register(GlobalConfiguration.Configuration);
Run Code Online (Sandbox Code Playgroud)

要启用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();
}
Run Code Online (Sandbox Code Playgroud)

有关MiniProfiler的更多信息,请参阅https://github.com/ServiceStack/ServiceStack/wiki/Release-Notes的 v3.09

Urls for metadata页面和包含的服务: