在webconfig或部署中隐藏Web方法服务

时间:2016-06-23 20:01:12

标签: .net web-services servicestack

我有一个.net webservice解决方案,暴露了几个web方法。 我需要使用此解决方案提供两个部署。一个暴露了所有方法,另一个隐藏了其中一些方法。

有没有办法轻易隐藏某些方法,所以当我部署它们时,我可以选择隐藏哪些方法。

也许在webconfig或者某些编译/部署选项中 谢谢

1 个答案:

答案 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初始化之前,如上所示。