WCF:如何从WCF服务调用中删除HTTP标头,如aspnet版本,服务器等

时间:2015-08-07 09:30:38

标签: c# asp.net wcf

为了安全起见,我要求我不应该披露服务器,asp.net版本等响应标头。

如何在为WCF服务进行调用时限制这些标头。

我已经尝试过以下配置设置但适用于aspx页面调用,但不适用于WCF服务调用。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="Server" />
        <remove name="X-Powered-By" />
        <remove name="X-AspNet-Version" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

谢谢, Mahantesh M. B。

1 个答案:

答案 0 :(得分:0)

您可以进入IIS并选择运行webservice的站点,在IIS部分中有一个名为HTTP Response Headers的按钮,单击它并删除标题

根据您的评论,您可以尝试添加消息检查器

public class RemoveHeaders: IDispatchMessageInspector
{
    public object AfterReceiveRequest(ref Message request,
        IClientChannel channel, InstanceContext instanceContext)
    {
        return null;
    }

    public void BeforeSendReply(ref Message reply, object correlationState)
    {

        var httpCtx = HttpContext.Current;
        if (httpCtx != null)
        {
            httpCtx.Response.Headers.Remove(HttpResponseHeader.Server.ToString());
        }
    }
}