我在 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/