我有一个托管在 IIS6 上的 WCF 服务,并且我使用的是 .net 框架 3.5。我拥有的网站位于公共(public)领域,我的意思是任何人都可以从任何地方访问。
我的问题是,有没有办法隐藏我的 WCF 服务?我可以很容易地查看我的页面的源代码或者确切地知道我的服务在页面后面的路径......http://hostname.MyServiceName.svc?wsdl
,我该如何隐藏它?
最佳答案
同意大卫的观点,只是“模糊”你的服务还不到解决方案的一半,你当然可以关闭
做做,确保你的
<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/