有没有办法将路由参数添加到 ServiceStack 中的基本工厂路径?/api/
目前,我们将 IIS 配置为ServiceStackHttpHandlerFactory
通过web.config将任何以 开头的请求路由。
<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>
此外,我们告诉 ServiceStack 应用程序它有一个通过AppHost.csapi
中的端点主机配置的基本工厂路径
SetConfig(new EndpointHostConfig { ServiceStackHandlerFactoryPath = "api" });
完成此操作后,我们通过请求 DTO 上的属性指定到我们服务的路由,[Route]
我们不必担心“/api”部分。
有没有办法将全局参数添加到路径的路由?我们的想法是在配置中添加这个参数,/api/{Locale}
然后我们所有的请求 DTO 都将从BaseRequest
具有属性的类继承string Locale {get;set;}
。
作为额外的奖励,如果可以将其设为可选参数(可能通过web.config
&中的两条路由AppHost.cs
)以允许此参数的“默认”值会更好。
编辑
我目前正在探索创建一个扩展类的类的想法RouteAttribute
。
public class PrefixedRouteAttribute : RouteAttribute
{
public static string Prefix = string.Empty;
public PrefixedRouteAttribute(string path) : base(Prefix + path)
public PrefixedRouteAttribute(string path, string verbs) : base(Prefix + path, verbs)
}
Prefix 值可以设置AppHost.cs
为/{Locale}
,这将自动将 Locale 参数注入所有路由,前提是我使用[PrefixedRoute]
而不是[Route]
.
这种方法似乎有效,除了我没有看到一种方法可以{Locale}
选择。