Rest 从servicestack url中删除project.serviceclass名称
我正在玩一些ServiceStack演示和示例代码,我试图看看是否有办法消除在url中使用project.serviceclass名称的需要。我使用nuget软件包创建了一个名为MvcMovieApp的ASP.NET MVC应用程序,并创建了一个名为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
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);
}
注释掉MVCRouteConfig
修复了这个问题,并允许我正确调用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处理程序映射,请参阅: