不会调用WCF POST方法

时间:2011-09-22 13:28:32

标签: wcf

我已经创建了一个WCF REST服务,最初使用的是.Net Framework版本4.该服务有两种方法,一种返回带有服务状态的普通字符串。第二个允许上传文件。两种方法都运行良好。

我被问到是否可以将项目移回到仅依赖.Net Framework 3.5而不是版本4.我更改了一些引用,它构建正常,当我使用现有的C ++客户端时,我可以使用GetStatus方法很好。但是,现在当文件上传时,客户端会看到所有方法的成功返回代码,但是,当我在WCF服务的FileUpload方法的开头设置断点时,它永远不会被执行。该文件不会上传,只会消失在以太网中。

[ServiceContract]
internal interface IMyWebService
{
    [OperationContract]
    [WebGet(UriTemplate = "/Status", BodyStyle=WebMessageBodyStyle.Bare)]
    Stream GetStatus();

    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "/FileUpload/{fileName}")]
    Stream FileUpload(string fileName, Stream fileStream);
}

我尝试使用WFetch工具作为替代客户端。当我调用FileUpload方法时,我得到了这个日志:

started....WWWConnect::Close("localhost","80")\nclosed source port: 15800\r\n
WWWConnect::Connect("localhost","80")\nIP = "[::1]:80"\nsource port: 15866\r\n
REQUEST: **************\nPOST http://myMachine/MyService/FileUpload/hello.txt HTTP/1.1\r\n
Host: localhost\r\n
Accept: */*\r\n
Content-Length:11\r\n
\r\n
hello thereRESPONSE: **************\nHTTP/1.1 415 Missing Content Type\r\n
Content-Length: 0\r\n
Server: Microsoft-HTTPAPI/2.0\r\n
Date: Thu, 22 Sep 2011 13:26:09 GMT\r\n
\r\n
finished.

有人能给我任何关于如何诊断这个问题的指示吗?我无法查看从哪里开始,因为没有断点被击中,并且没有要调查的错误代码。

WCF服务必须做某事,因为如果我停止它,客户端则无法上传文件,我只是无法理解为什么执行永远不会到达实现POST操作的方法。

嗯,当使用WFetch时,即使我拼错了方法的名称,它似乎仍然没有错误地成功。

感谢。

1 个答案:

答案 0 :(得分:1)

我开始使用原始4.0版本的服务和基于C#WCF的测试客户端进行故障排除,以验证服务代码是否会成功上传文件。您可以使用代码in this Technet article来开发测试客户端。

接下来,针对4.0服务使用C ++客户端来验证客户端是否将成功发送文件。最后,将服务设置回3.5并查看它是否仍然有效。要记录服务正在接收的消息以进行故障排除,请查看this MSDN post以配置内置WCF消息记录功能。