【发布时间】:2013-02-22 02:03:20
【问题描述】:
所以我写了我的第一个 WCF 项目,似乎它使用我的浏览器和 jquery 工作,但后来我写了一个客户端,事情有点搞砸了...... 实际上似乎我对那个客户端所做的一切都会导致 400 错误的请求响应...... 所以我读了一些帖子,发现一个很好的整理方法是使用提琴手,然后开始四处挑选......
由于提琴手无法识别我的客户,我已经使用我的客户将数据直接发送给它...... https://docs.google.com/file/d/0ByOtHJSZT_GtNHZqTVZMdVVqZEU/edit?usp=sharing 您可以在此处查看屏幕截图。
正如我所见,唯一不同的是一些标题的泄漏(这对我来说似乎并不真正有用),一个使用 content-type 作为 application/jsonp 另一个 text/html(我认为这是主要问题)。 不好的是我在发送请求之前设置了 content-type 标头,但是没有结果,请注意在右侧面板中您仍然可以看到 application/json。 我越来越糊涂了。
private void SendSelectedFile()
{
string url = "http://" + WindowsFormsApplication1.Properties.Settings.Default.HostAddress + "/Service1.svc/rest/PostFileToServer";
string jsonMsg = "{\"fileContentAsBase64String\":\"" + this.textBox1.Text + "\",\"where\":\"D:\\Temp.dwg\"}";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(jsonMsg);
HttpWebRequest wr = WebRequest.Create(new Uri(url)) as HttpWebRequest;
wr.Method = "POST";
wr.ContentType = "application/json; charset=utf-8";
wr.ContentLength = buffer.Length;
//wr.TransferEncoding = "UTF-8";
System.IO.Stream rs = wr.GetRequestStream();
rs.Write(buffer , 0, buffer.Length);
rs.Close();
WebResponse response = wr.GetResponse();
}
这是服务的接口
[WebInvoke(
Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/PostFileToServer"
)]
Boolean PostFileToServer(string fileContentAsBase64String, string where);
【问题讨论】:
-
有了REST,是时候离开WCF了,Web Api就简单多了
-
我在您链接的屏幕截图中看到了两个请求,都有 200 响应。返回 400 的那个在哪里?
-
正如我所说的第二个请求是针对总是以 200 响应的提琴手,提琴手无法拦截我的正常请求,很高兴知道为什么。如何使用 Web API 实现服务?你能指出我吗?我喜欢保持简单。
-
似乎提琴手在拦截对“localhost”的请求时遇到了一些问题,我在更改 iis express 的行为方式时遇到了一些问题。
标签: c# .net wcf bad-request