.Net WCF 415 缺少内容类型

.Net WCF 415 Missing Content Type

我运行遇到一个我无法解决的问题。我在 SO 上找到了一些相关问题,但 none 到目前为止对我有帮助。

这是运行宁的代码:

HttpWebRequest handler = (HttpWebRequest)WebRequest.Create("someUrl");
handler.Method = "POST";

string postData = "some data";

byte[] data = Encoding.ASCII.GetBytes(postData);
handler.ContentLength = data.Length;
using (var stream = handler.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}
handler.ContentType = "application/xml; charset=utf-8";
HttpWebResponse response = (HttpWebResponse)handler.GetResponse();

终结点 (url) 是一个 WCF REST 接口。当我 运行 此代码针对测试 REST 接口时,它工作正常。

然而,当我 运行 它针对实时 REST 界面时,我得到这个错误:

远程服务器返回错误:(415) 缺少内容类型。`

现在两个端点上的 REST 接口相同。然而,有 2 个差异可能会影响结果:

首先,实时 REST 运行s 通过 https 并且有

<security mode="Transport"/>

在 webHttpBinding 部分下的 web.config 中。

其次,测试 REST 服务器是最新的 Windows (.Net) 更新),实时 REST 服务器不是。

有人知道如何解决这个问题吗?

提前致谢!

好的,使用 Fiddler 找到它:当这一行

using (var stream = handler.GetRequestStream())

正在执行连接已经建立,所以当我稍后设置内容类型时,为时已晚。

当我将这行代码几乎移到顶部时

handler.ContentType = "application/xml; charset=utf-8";

它正在工作,我可以看到正在传输的内容类型。

它没有回答为什么最初它在测试环境而不是在现场工作的问题,但现在..