有没有办法拦截所有命中您服务的 http 请求?
例子:
请求http://host/Account/Create
在一个地方捕获并重定向到正确的服务。
请求http://host/Account/Delete/1
在一个地方捕获并重定向到正确的服务。
是否有捷径可寻?
有没有办法拦截所有命中您服务的 http 请求?
例子:
请求http://host/Account/Create
在一个地方捕获并重定向到正确的服务。
请求http://host/Account/Delete/1
在一个地方捕获并重定向到正确的服务。
是否有捷径可寻?
如果您想了解过滤器如何运作的具体细节,您可以查看ServiceStack的操作顺序。
APreRequestFilter
可能是您想要的,如果您只想通过Request.PathInfo
.
PreRequestFilter
将为每个请求触发,但您的 DTO 不会被反序列化。请参阅 ServiceStack 自己的RequestLogsFeature.cs中的示例用法
对于我的场景,我使用RequestFilters
这样我就可以先根据类型做出决定,然后在需要requestDto.GetType()
时回退。httpReq.PathInfo
但是,这只会触发 REST 请求。
我在我的 AppHost 类中做了这样的事情:
this.RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
if (AppConfig.RequireSsl)
new RequireSslAttribute().Execute(httpReq, httpResp, requestDto);
// Force authentication if the request is not explicitly made public
if (!AppConfig.IsPublic(httpReq, requestDto.GetType()))
new AuthenticateAttribute().Execute(httpReq, httpResp, requestDto);
});