servicestack,Rest,servicestack" /> servicestack,Rest,servicestack" />

Rest 从servicestack url中删除project.serviceclass名称

Rest 从servicestack url中删除project.serviceclass名称,rest,servicestack,Rest,servicestack,我正在玩一些ServiceStack演示和示例代码,我试图看看是否有办法消除在url中使用project.serviceclass名称的需要。我使用nuget软件包创建了一个名为MvcMovieApp的ASP.NET MVC应用程序,并创建了一个名为MovieService的SS服务 [路线(“/Movie”)] [路线(“/Movie/{Name}”)] 公映 { 公共长Id{get;set;} 公共字符串名称{get;set;} 公共字符串说明{get;set;} 公共字符串类型{get;s

我正在玩一些ServiceStack演示和示例代码,我试图看看是否有办法消除在url中使用project.serviceclass名称的需要。我使用nuget软件包创建了一个名为MvcMovieApp的ASP.NET MVC应用程序,并创建了一个名为
MovieService
的SS服务

[路线(“/Movie”)]
[路线(“/Movie/{Name}”)]
公映
{
公共长Id{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共字符串类型{get;set;}
}
公共级电影责任
{
公共字符串结果{get;set;}
}
公共级电影服务:服务
{
公共对象任意(电影请求)
{
return new MovieResponse{Result=“最好的电影是”+request.Name};
}
}
因此,为了得到答复,我必须要求:

localhost/api/MvcMovieApp.MovieService/Movie/MyMovie

但我想提出这个要求

localhost/api/Movie/MyMovie

有办法做到这一点吗

更新


更新2:

我能让它在某种程度上发挥作用。我试图将ServiceStack与MVC应用程序集成在一起。因此,我的
应用程序\u Start
具有以下功能:

受保护的无效应用程序\u Start()
{
RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
//RouteConfig.RegisterRoutes(RouteTable.Routes);
}
注释掉MVC
RouteConfig
修复了这个问题,并允许我正确调用ServiceStack API。下面是
registerOutes
方法。我有这样一句话,MVC应该忽略API中的所有内容

publicstaticvoidregisterOutes(路由收集路由)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
//routes.MapHttpRoute(
//名称:“DefaultApi”,
//routeTemplate:“api/{controller}/{id}”,
//默认值:新建{id=RouteParameter.Optional}
//);
routes.MapRoute(
名称:“默认”,
url:“{controller}/{action}/{id}”,
默认值:新建{controller=“Home”,action=“Index”,id=UrlParameter.Optional}
);
IgnoreRoute(“api/{*pathInfo}”);
routes.IgnoreRoute(“{*favicon}”,new{favicon=@”(.*/)?favicon.ico(/.*)”});//防止favicon出现异常
}

知道我做错了什么吗?谢谢,每个配置文件只能显示一次httpHandlers部分。此外,当path=api*是位置的子项时,您不需要在httpHandler中包含它

仅在配置中使用此选项:

<location path="api">
  <system.web>
    <httpHandlers>
      <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
    </httpHandlers>
  </system.web>
  <!-- Required for IIS 7.0 -->
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
    </handlers>
  </system.webServer>
</location>


它应该可以工作。您可以发布web.config中处理httpHandler路径的部分吗?它应按预期工作,确保已配置正确的ASP.NET处理程序映射,请参阅: