将属性应用于WCF服务方法以访问Cookie

时间:2011-12-12 04:50:41

标签: c# wcf custom-attributes

有没有办法将自定义属性应用于可以访问Cookies标头的WCF服务方法? WCF服务是基于REST的,只会通过HTTP传输使用。

到目前为止,我发现获取属性以应用于我的WCF服务方法的唯一方法是实现IOperationBehavior接口。有了这个,我至少可以实现我的属性实例化,并调用IOperationBehavior方法但是如何从那里到达我可以访问HttpContext.Current以获取Cookies的地方?

我的属性是:

[AttributeUsage(AttributeTargets.Method)]
public class MyAttribute : Attribute, IOperationBehavior
{
    public MyAttribute()
    {
        int x = 1;
    }

    void IOperationBehavior.ApplyDispatchBehavior(OperationDescription operationDescription, System.ServiceModel.Dispatcher.DispatchOperation dispatchOperation)
    {
        dispatchOperation.ParameterInspectors.Add(this);
    }

    void IOperationBehavior.Validate(OperationDescription operationDescription)
    {
        var context = HttpContext.Current;
        int y = 2;
    }

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
    {
        var context = HttpContext.Current;
        int y = 2;
    }

    public object BeforeCall(string operationName, object[] inputs)
    {
        return null;
    }
}

我正在使用以下方法将其应用于我的服务方法:

public class MyService : IMyService
{
    [MyAttribute]
    public bool IsAlive()
    {
        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

您可以在服务方法中使用HttpContext.Current.Request.Cookies []来访问Cookie。您不需要编写自定义属性来实现它