【问题标题】:How can you hide the fact your server has a WCF service located at MyService.svc你如何隐藏你的服务器有一个位于 MyService.svc 的 WCF 服务的事实
【发布时间】:2009-10-27 21:05:35
【问题描述】:

有没有办法在运行 IIS 6.0 和 .NET 3.5 SP1 的服务器上提供从直接访问请求到 WCF 服务(.svc 文件)的自定义“抱歉未找到”页面。

我要求我的生产环境中的服务不可被发现。该要求规定应关闭 WSDL 发布,并且该请求还规定,当通过 HTTP 获取请求直接访问 MyService.svc 文件时,将显示“Sorry Not found”页面。

我在配置文件中禁用元数据没有问题。

<serviceMetadata httpGetEnabled="false" />

但我想不出一种不显示默认 .svc 页面的方法。

服务
这是 Windows© Communication Foundation 服务。

此服务的元数据发布当前已禁用。

如果您有权访问该服务,则可以通过完成以下步骤来修改您的 Web 或应用程序配置文件来启用元数据发布: ...

** 也发布在ServerFault

【问题讨论】:

  • 你试过关闭httpGetEnabled吗?这不正是您需要的吗?
  • 在服务器故障时发布响应(属于服务器故障?)。附言我不会责怪你...服务器故障是问题消失的地方。
  • 澄清 httpGetEnabled 设置为 False 的 ServiceMetadata 是 WSDL 定义。但是您仍然会返回通用的“这是一项服务”页面。
  • 另外,我在 Stackoverflow 上发帖,因为 ServerFault 可能不知道关于 web.config 的很多细节,如果有的话,最有可能的答案。

标签: wcf


【解决方案1】:

在 web.config 中:

<httpHandlers>
    <remove verb="*" path="*.svc" />
    <add path="*.svc" verb="POST" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/>
</httpHandlers>

【讨论】:

    【解决方案2】:

    尝试在 Web.config 中将 http[s]HelpPageEnabled 设置为 false。示例:

        <system.serviceModel>
          <behaviors>
             <serviceBehaviors>
                <behavior>
                   <serviceMetadata httpGetEnabled="false" />
                   <serviceDebug httpHelpPageEnabled="false"/>
                </behavior>
             </serviceBehaviors>
          </behaviors>
        </system.serviceModel>
    

    【讨论】:

    • 作为补充说明,如果使用 SSL,还要分别设置属性httpsGetEnabledhttsHelpPageEnabled
    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多