【问题标题】:How to remove default header from WCF REST Outgoing Response?如何从 WCF REST 传出响应中删除默认标头?
【发布时间】:2010-06-15 18:18:24
【问题描述】:

以下基于 C# WCF 的 REST 服务为我提供了一些不需要的标头,我不确定是否可以通过 API 删除它们。

界面:

[ServiceContract]
public interface IControlSystem
{
    [OperationContract]
    [WebGet]
    System.IO.Stream About();
}

实现:

public class ControlSystem : IControlSystem
{
    public System.IO.Stream About()
    {
        return new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes("Hello World"));
    }
}

在原始套接字连接中,它给出以下响应:

HTTP/1.1 200 正常 服务器:ASP.NET 开发服务器/9.0.0.0 日期:格林威治标准时间 2010 年 6 月 15 日星期二 13:12:51 X-AspNet-版本:2.0.50727 缓存控制:私有 内容类型:应用程序/八位字节流 内容长度:39 连接:关闭

你好世界

问题是,是否可以让服务器不报告除实际消息之外的任何内容?由于一些小型嵌入式设备客户端会尝试连接到服务器,因此在某些调用中需要它,我想尽量减少解析量。

谢谢, B.

【问题讨论】:

    标签: c# .net wcf rest


    【解决方案1】:

    您到底要删除哪些标题?

    setting the right options 可以删除 X-Asp-Version 标头。 other ways 可以删除在 IIS 下运行时可能有用的其他标头(而不是 asp.net 开发服务器,无论如何您都不会在生产中使用它)。

    也就是说,您永远无法删除所有 HTTP 内容;这是核心协议设计,也是必需的。如果您不希望这样,那么,完全不要使用 HTTP 并切换到更适合您需求的协议(这可能需要实现您自己的自定义 WCF 传输通道,但这当然是可能的)。

    【讨论】:

    • 谢谢,非常感谢。
    • 好的,有趣的是,在 IIS 下运行时,默认情况下不会返回任何标头,这正是我想要的。另外,我查看了如何让一个简单的原始客户端连接到自定义绑定,但不幸的是没有 BindingElement 可以让我通过非 SOAP 消息。充其量我可以使用 TCP 传输和文本为消息编码设置自定义绑定。仍然会使用 SOAP。
    • 仅用于文档,这里有一个很好的绑定信息链接:msdn.microsoft.com/en-us/magazine/cc163394.aspx#S4
    • 如果你对 HTTP 没问题但不想要 SOAP,为什么不改用 WebHttpBinding 呢?
    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 2018-06-11
    • 2012-06-24
    • 2013-06-02
    • 2014-10-16
    • 1970-01-01
    • 2011-07-05
    • 2017-05-07
    相关资源
    最近更新 更多