如何获得有关此REST服务请求无效的原因的更多详细信息?

时间:2010-09-15 19:24:17

标签: .net debugging visual-studio-2010 rest httpclient

我的目标是创建一个REST服务,允许我POST和GET图像。我有GET部分工作,但是我很难将图像发布到我创建的服务中。使用WCF REST Service Template 40 (CS)模板,我创建了以下方法来处理我的POST。

[WebInvoke(Method = "POST", UriTemplate = "upload/?fileName={fileName}")]
public void AddImageToStore(Stream file, string fileName)
{
// Implementation goes here.  For now method is empty.
}

以下是我用来使用上述方法的代码。如果我取消注释第3行并且在身体中什么都不发送一切正常。如果我取消注释第4行并在正文中发送文本没有错误。但是,如果我在流中发送图像,则会收到错误“BadRequest(400)不是以下之一:OK(200)...”

Stream theStream = new MemoryStream(File.ReadAllBytes(@"C:\test.jpg"));
Uri uri = new Uri("http://127.0.0.1:50001/MediaService/upload/?fileName=test.jpg");
HttpClient client = new HttpClient(uri);
// HttpContent content = HttpContent.CreateEmpty(); //Status successful
// HttpContent content = HttpContent.Create("test", Encoding.UTF8); //Status successful
// HttpContent content = HttpContent.Create(theStream, "image/jpeg", theStream.Length); //Error when I send a stream!

HttpResponseMessage response = client.Post(uri, content);
response.EnsureStatusIsSuccessful();

这是我第一次尝试使用REST服务。我现在卡在如何调试它。如何获得有关真正错误的详细信息? “BadRequest(400)...”错误消息不是很有用。

1 个答案:

答案 0 :(得分:1)

经过大量的反复试验,我能够回答自己的问题。

事实证明我发送的文件大于默认缓冲池可以接受的文件。我最后在web.config中调整了 MaxBufferPoolSize MaxBufferSize MaxReceivedMessageSize

的默认值