wcf AfterReceiveRequest服务如何用拦截限制客户端?
1个回答
展开全部
/// <summary>
/// 从客户端接收消息后
/// 我们在这里进行用户权限的验证。
/// 该方法在WCF方法前执行
/// </summary>
/// <param name="request"></param>
/// <param name="channel"></param>
/// <param name="instanceContext"></param>
/// <returns></returns>
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
//获取将要操作的webservice方法
OperationContext ctx = OperationContext.Current;
ServiceDescription hostDesc = ctx.Host.Description;
ServiceEndpoint endpoint = hostDesc.Endpoints.Find(ctx.IncomingMessageHeaders.To);
string operationName = ctx.IncomingMessageHeaders.Action.Replace(
endpoint.Contract.Namespace + endpoint.Contract.Name + "/", "");
//当访问Login方法时,是不需要在AfterReceiveRequest做权限验证的
if (operationName == "Login")
{
//不做验证
}
}
/// 从客户端接收消息后
/// 我们在这里进行用户权限的验证。
/// 该方法在WCF方法前执行
/// </summary>
/// <param name="request"></param>
/// <param name="channel"></param>
/// <param name="instanceContext"></param>
/// <returns></returns>
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
//获取将要操作的webservice方法
OperationContext ctx = OperationContext.Current;
ServiceDescription hostDesc = ctx.Host.Description;
ServiceEndpoint endpoint = hostDesc.Endpoints.Find(ctx.IncomingMessageHeaders.To);
string operationName = ctx.IncomingMessageHeaders.Action.Replace(
endpoint.Contract.Namespace + endpoint.Contract.Name + "/", "");
//当访问Login方法时,是不需要在AfterReceiveRequest做权限验证的
if (operationName == "Login")
{
//不做验证
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询