我有一个.net webservice解决方案,暴露了几个web方法。 我需要使用此解决方案提供两个部署。一个暴露了所有方法,另一个隐藏了其中一些方法。
有没有办法轻易隐藏某些方法,所以当我部署它们时,我可以选择隐藏哪些方法。
也许在webconfig或者某些编译/部署选项中 谢谢
答案 0 :(得分:1)
您可以使用Restrict Attribute来限制和隐藏不同情况下的服务,例如,您可以通过以下方式注释您的请求DTO来隐藏外部用户无法看到服务:
[Restrict(VisibleInternalOnly = true)]
public class InternalAdmin { }
[Exclude]
属性是一个替代属性,用于向所有人隐藏服务并显示在元数据服务中:
[Exclude(Feature.Metadata)]
public class Hidden {}
由于这是一种流行的方案,您也可以使用
[ExcludeMetadata]
代替。
因此,您可以使用#def's
创建使用和不应用这些属性的不同版本。
否则,这些属性也可以在运行时使用动态属性API动态添加,例如:
typeof(Hidden)
.AddAttributes(new ExcludeAttribute(Feature.Metadata));
new AppHost().Init();
注意属性需要在运行 AppHost.Configure()
之前添加,因此要么在AppHost构造函数中,要么在AppHost初始化之前,如上所示。