Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 服务堆栈拦截所有Http到服务_C#_.net_Http_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,.net,Http,servicestack" /> servicestack,C#,.net,Http,servicestack" />

C# 服务堆栈拦截所有Http到服务

C# 服务堆栈拦截所有Http到服务,c#,.net,http,servicestack,C#,.net,Http,servicestack,是否有一种方法可以拦截所有命中您的服务的http请求 例如: 请求http://host/Account/Create在单个位置捕获并重定向到正确的服务 请求http://host/Account/Delete/1在单个位置捕获并重定向到正确的服务 有没有一种简单的方法可以做到这一点?如果您想了解有关过滤器如何工作的具体细节,可以查看for ServiceStack 如果您只想通过类似于request.PathInfo的方式过滤每个请求,那么PreRequestFilter很可能就是您想要的 P

是否有一种方法可以拦截所有命中您的服务的http请求

例如:

请求
http://host/Account/Create
在单个位置捕获并重定向到正确的服务

请求
http://host/Account/Delete/1
在单个位置捕获并重定向到正确的服务

有没有一种简单的方法可以做到这一点?

如果您想了解有关过滤器如何工作的具体细节,可以查看for ServiceStack

如果您只想通过类似于
request.PathInfo
的方式过滤每个请求,那么
PreRequestFilter
很可能就是您想要的

PreRequestFilter
将为每个请求触发,但您的DTO尚未被反序列化。请参见ServiceStack自己的中的示例用法

在我的场景中,我使用了
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);
});