如果您正在编写的 HTTP 消息是响应消息(即来自服务器),那么您将使用 IODataResponseMessage。如果您从客户端构造消息,您将使用 IODataRequestMessage。听起来您正在编写服务器,因此您应该在创建写入器时使用 IODataResponseMessage 并在创建读取器时使用 IODataRequestMessage 。
没错,直接使用 ODataLib 会涉及很多工作。当您想要/需要编写自己的服务器并需要一个知道如何序列化 OData 有效负载格式的组件时,ODataLib 非常有用。如果您不需要对服务器进行如此高度的控制,我建议您使用 ASP.Net Web API 的 OData 实现,它实际上在后台使用 ODataLib。
话虽如此,如果您从请求中给它 Accept 标头,ODataLib 可以计算出要响应的 Content-Type。您只需要在编写器设置上调用 SetContentType :
var settings = new ODataMessageWriterSettings();
settings.SetContentType(
"application/json;q=.4, text/html", // Accept
"iso-8859-5, unicode-1-1;q=0.8" // Accept-Charset
);