wcf - 隐藏我的 WCF 服务?

标签 wcf wcf-binding svc

我有一个托管在 IIS6 上的 WCF 服务,并且我使用的是 .net 框架 3.5。我拥有的网站位于公共(public)领域,我的意思是任何人都可以从任何地方访问。

我的问题是,有没有办法隐藏我的 WCF 服务?我可以很容易地查看我的页面的源代码或者确切地知道我的服务在页面后面的路径......
http://hostname.MyServiceName.svc?wsdl ,我该如何隐藏它?

最佳答案

同意大卫的观点,只是“模糊”你的服务还不到解决方案的一半,你当然可以关闭

  • 服务元数据
  • WSDL 文件的 http 可用性

  • 做做,确保你的<service>标签没有引用 <serviceBehavior>其中包括 <serviceMetadata>标签。

    所以这个公开服务元数据(包括 HTTP 上的 WSDL):
    <behaviors>
       <serviceBehaviors>
          <behavior name="default">
             <serviceMetadata httpGetEnabled="True" />
             <serviceDebug includeExceptionDetailInFaults="True" />
          </behavior>
    </serviceBehaviors>
    <behaviors>
    <services>
       <service name="IYourService" behaviorConfiguration="default">
          ...
       </service>
    </services>
    

    而这将不公开任何服务元数据(观察 <serviceMetadata> 标签的删除):
    <behaviors>
       <serviceBehaviors>
          <behavior name="nometadata">
             <serviceDebug includeExceptionDetailInFaults="True" />
          </behavior>
    </serviceBehaviors>
    <behaviors>
    <services>
       <service name="IYourService" behaviorConfiguration="nometadata">
          ...
       </service>
    </services>
    

    删除任何服务元数据时,您将无法执行 Add Service Reference不再从 Visual Studio(或任何其他开发系统的等价物)内部 - 该服务不会告诉你什么是可用的 - 你必须知道其他方式。

    关于wcf - 隐藏我的 WCF 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360834/

    相关文章:

    asp.net - WCF 返回 xml 而不是 JSON

    c# - 绑定(bind)可编辑的组合框并检测 wpf 中插入的文本

    ssl - 通过 SSL 的 WCF - 404 错误

    WCF 服务、应用程序域和网站

    WCF 客户端 - 为什么会出现此错误?

    c# - 在 Azure 中托管旧版 WCF 服务

    c# - 仅在一处处理 WCF Rest 服务异常

    wcf - 为什么我的 WCF 服务没有加载我的绑定(bind)配置?

    c# - Svc 文件在没有代码隐藏的情况下工作?

    python - 没有名为 'sklearn' 的模块