0

我遇到了一个我无法解决的问题。我发现了一些关于 SO 的相关问题,但到目前为止没有一个对我有帮助。

这是正在运行的代码:

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 接口是相同的。但是,有两个差异可能会影响结果:

首先,实时 REST 在 https 上运行并且具有

<security mode="Transport"/>

在 webHttpBinding 部分下的 web.config 中。

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

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

提前致谢!

4

1 回答 1

0

好的,使用 Fiddler 找到它:当这条线

using (var stream = handler.GetRequestStream())

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

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

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

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

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

于 2018-06-28T11:20:06.547 回答