wcf - WCF 中的 HttpContext

标签 wcf rest httpcontext

我在 WCF 中编写了一个简单的 REST API,身份验证机制使用 API key 。一旦客户端在请求头中提交 API key ,我会在服务器端(在 BaseService 类中覆盖 RequestInterceptor 类的 ProcessRequest() 方法)进行检查,如下所示:

public partial class BaseService : RequestInterceptor
{
    public BaseService() : base(false) { }

    #region Process Request
    public override void ProcessRequest(ref RequestContext requestContext)
    {
        if (IsValidApiKey(requestContext))
           //put some values in HttpContext object.

     }

...

现在我已经在我的 REST 服务中启用了 aspnet 兼容性,但我仍然无法访问上面 ProcessRequest 覆盖中的 HttpContext 对象。
请注意,可以从服务方法内部访问 HttpContext,但不能在 ProcessRequest 方法中访问。

任何想法为什么?

最佳答案

HttpContext 可能在 WCF channel 堆栈中初始化得更晚。请记住, channel 拦截器首先在 channel 堆栈中运行,并且就在从 Http channel 监听器接收到消息之后。从请求拦截器访问 HttpContext 需要什么? Http 请求可用作与 requestContext 关联的消息中的属性。您还可以在消息中可用的属性包中添加存储一些值。

谢谢
巴勃罗。

关于wcf - WCF 中的 HttpContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4900596/

相关文章:

c# - 通过 ILMerge 合并 WCF 引用

c# - 有没有办法从 WCF REST 方法返回不同的类型?

c# - 将 WCF 服务引用添加到多个项目

spring - 如何为每个 url 配置 grails/spring 身份验证方案?

api - 设计一个接受大量数据作为输入的 REST API 端点

.net - WCF HTTPS 证书实现问题

web-services - Rest WebService 错误处理

sharepoint - 如何在 Event Handler 中获取 HttpContext

c# - 返回结果为 "::1"的 Request.UserHostAddress 问题

c# - 如何使用 ASP.NET C# 立即执行下载?