.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";
它正在工作,我可以看到正在传输的内容类型。
它没有回答为什么最初它在测试环境而不是在现场工作的问题,但现在..
我运行遇到一个我无法解决的问题。我在 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";
它正在工作,我可以看到正在传输的内容类型。
它没有回答为什么最初它在测试环境而不是在现场工作的问题,但现在..