1

我正在寻找一种干净的方法来区分$metadata请求与使用 WCF 数据服务 ( 5.5.0 ) 的实体请求。

而不是在 HTTP 模块级别(作为已注册IHttpModule)应用身份验证,似乎我必须在请求生命周期的后期应用它。

不幸的是,我似乎可以应用它(并且不让它干扰$metadata请求)的唯一“稍后”时间是在QueryInterceptor方法中。这里的问题是,它们有很多,而且我不得不在所有这些中复制一个方法调用来验证请求,这似乎很愚蠢。

我的问题归结为:我应该在 WCF 数据服务请求生命周期的哪个时间点执行身份验证并且不让它干扰$metadata请求;或者,我应该如何测试请求是否是针对的,$metadata以便我可以将身份验证逻辑提升回更高的方法。

在我看来,(阅读:应该)是一个IsMetadataRequest浮动的属性,因此允许:

protected override void OnStartProcessingRequest(ProcessRequestArgs args) {
    base.OnStartProcessingRequest(args);
    if (IsMetadataRequest) {
        return;
    }
    // proceed with auth
}

我可以将一些东西破解到一个只读取 URI 的服务基类中,但似乎应该有更多定义的东西。

4

0 回答 0