我遇到了无法解决的问题。我发现了一些与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服务器。
有人知道如何解决此问题吗?
谢谢!
答案 0 :(得分:0)
好吧,使用Fiddler:在此行找到它
using (var stream = handler.GetRequestStream())
正在执行连接已建立,因此当我稍后设置内容类型时,为时已晚。
当我将这段代码几乎移到顶部
handler.ContentType = "application/xml; charset=utf-8";
它可以正常工作,我可以看到正在传输的内容类型。
它没有回答这个问题,为什么它最初可以在测试环境上工作,而不是在实时环境下工作,但是现在。