.Net WCF 415缺少内容类型

时间:2018-06-25 15:28:24

标签: c# .net wcf iis http-status-code-415

我遇到了无法解决的问题。我发现了一些与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接口都相同。但是,有2个差异可能会影响结果:

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

<security mode="Transport"/>

在webHttpBinding部分的web.config中。

第二,测试REST服务器是有关Windows(.Net)更新的最新信息,而不是实时REST服务器。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,使用Fiddler:在此行找到它

using (var stream = handler.GetRequestStream())

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

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

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

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

它没有回答这个问题,为什么它最初可以在测试环境上工作,而不是在实时环境下工作,但是现在。