在进入实际函数之前,强制WCF在每个请求上调用方法

时间:2009-11-25 17:26:33

标签: wcf web-services rest

我有一个具有许多不同功能的RESTful WCF服务。对于每个函数,我需要调用我编写的身份验证方法。我可以在每个请求上手动调用此方法,但我正在寻找一种方法来强制WCF引擎在输入这些函数之前调用此方法。有谁知道这是否可能?

干杯

5 个答案:

答案 0 :(得分:8)

您可以使用“自定义行为”方法。

您需要编写一个实现IDispatchMessageInspector的类。以下MSDN杂志文章对此进行了很好的解释:Extending WCF with Custom Behaviors (link points to Wayback Machine cached copy; downloads likely don't work)

答案 1 :(得分:2)

强制WCF REST服务首先调用方法,尤其是在授权时 自定义/覆盖 System.ServiceModel.ServiceAuthorizationManager CheckAccessCore 方法 参考:http://msdn.microsoft.com/en-us/library/ms731774(v=vs.110).aspx

答案 2 :(得分:0)

您可以考虑创建WCF路由服务。您可以调用固定端点 - 您的身份验证方法 - 然后从那里开始,根据请求中的某些指示将您的调用路由到实际方法。

对于.NET 4,路由服务功能将包含在开箱即用的WCF中。

我不知道的是,所有这些都与REST相匹配。

答案 3 :(得分:0)

如果是授权,你不能使用内置服务吗?

例如,有PrincipalPermission属性。这对你的情况有帮助吗?

答案 4 :(得分:-3)

我在搜索同样的事情时遇到了这个帖子。没有一个答案是简单/快速的解决方案所以如果你只是想在每个方法之前调用一个函数那么你就可以做我刚刚做的事情:

我创建了zero argument constructor

public class myService : ImyService 
{
    myService ()
    {
        ConnectToDatabAse();
        FunctionYouWantToCallBeforeEveryMethodCall(); 
        //Add here more
    }
}