【发布时间】:2016-08-04 11:50:03
【问题描述】:
在我当前的项目中,我正在向 WCF 服务发送 POST 请求。但是,我得到了空洞的回应。我曾尝试在 stackoverflow 上使用类似的帖子:POST1 和 [POST2][2],但我无法解决问题。 我的WCF服务代码如下:
namespace RestfulWCFService
{
[OperationContract]
[WebInvoke(Method="GET", ResponseFormat= WebMessageFormat.Xml, UriTemplate="xml/?firstname={firstname}&lastname={lastname}")]
string SayHelloXml(string firstname, string lastname);
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "json/{name}")]
string SayHelloJson(string name);
[ServiceContract]
public interface IRestfulTestService
{
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/data")]
string SayHelloJSONPOSTRequest(string jsonRequestString);
}
}
接口的实现如下:
namespace RestfulWCFService
{
string IRestfulTestService.SayHelloXml(string firstname, string lastname)
{
return "Hello " + firstname + " " + lastname;
}
string IRestfulTestService.SayHelloJson(string name)
{
return "Hello " + name;
}
public class RestfulTestService : IRestfulTestService
{
string IRestfulTestService.SayHelloJSONPOSTRequest(string jsonRequestString)
{
return "Hello " + jsonRequestString;
}
}
}
现在,来自 REST 客户端,我的请求如下:
http://localhost/RestfulWCFService/RestfulTestService.svc/data
Content-Type:application/json 和有效载荷是 {"firstname":"Pankesh"} 。我没有收到 WCF 的回复。
我附上我的客户的截图供您参考。
【问题讨论】:
-
您似乎收到了 500。无法激活该服务。浏览到localhost/RestfulWCFService/RestfulTestService.svc 看看为什么。
-
@smoksnes :当我发出 GET 请求时,该服务已被激活。我正在更新合同定义及其实施文件供您参考。
-
好的,那么您在客户端显示的状态消息与您发出的请求无关?
-
是的,截图是关于POST请求的,不是GET请求。我只是发出 GET 请求以检查服务是否已激活...
-
@smoksnes:我已根据您和 Robin 的建议进行了编辑。现在,我得到了响应,但带有一个空字符串。请求提供建议。