C# 限制WCF客户端访问某些公共类和方法
我的项目中有以下内容 WarehouseAPI.Core.dll//包含所有数据访问代码 WCF服务//引用WarehouseAPI.Core.dll库 当wcf客户端使用该服务时,它可以访问WarehouseAPI.Core.dll中的所有公共方法和类,但我只想只授予对某些类和方法的访问权C# 限制WCF客户端访问某些公共类和方法,c#,asp.net,wcf,C#,Asp.net,Wcf,我的项目中有以下内容 WarehouseAPI.Core.dll//包含所有数据访问代码 WCF服务//引用WarehouseAPI.Core.dll库 当wcf客户端使用该服务时,它可以访问WarehouseAPI.Core.dll中的所有公共方法和类,但我只想只授予对某些类和方法的访问权 我怎样才能做到这一点呢?这个答案非常笼统,但是。。。创建WarehouseAPI_WCF.Core.dll,它只包括您希望显示的公共方法,它们调用WarehouseAPI.Core.dll。将WCF服务指向
我怎样才能做到这一点呢?这个答案非常笼统,但是。。。创建WarehouseAPI_WCF.Core.dll,它只包括您希望显示的公共方法,它们调用WarehouseAPI.Core.dll。将WCF服务指向WarehouseAPI_WCF.Core.dll
根据类的结构,您可以使用继承和创建私有方法来隐藏公共方法。当您为WCF服务定义契约(IService1样式接口)时,任何连接到该服务的客户端都将看到该服务契约中定义的所有方法:
[ServiceContract]
public interface IService1
{
[OperationContract]
public void DoSomething();
[OperationContract]
public void DoSomethingElse();
[OperationContract]
public void DoSomethingTotallyDifferent();
}
这是故意的,这是件好事
因此,如果您的IService1
接口暴露太多,则需要将其分解为较小的“核心”和较大的“扩展”版本(-->遵循面向对象设计的接口隔离原则)
然后,您可以分别公开这两个服务,并允许某些客户端仅连接到“核心”服务:
由于
IService1Extended
是从IService1Core
衍生而来,因此最终,“扩展”服务仍将提供原始服务的所有功能。但是现在您可以拥有一个只公开IService1Core
契约的端点,从而限制连接到该端点的客户端只调用DoSomething()
——而不调用其他方法(因为在该服务契约上,没有定义其他方法)我不确定问题是什么-WCF服务将只访问WarehouseAPI.Core.dll中它需要访问的方法和类,使用该服务的任何人都只能访问该服务公开的方法,
[ServiceContract]
public interface IService1Core
{
[OperationContract]
public void DoSomething();
}
[ServiceContract]
public interface IService1Extended : IService1Core
{
[OperationContract]
public void DoSomethingElse();
[OperationContract]
public void DoSomethingTotallyDifferent();
}