您应该检查的几件事
1) 在 WCF 服务类上添加了以下属性。
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
2) 您使用的消息正文样式是裸露的,这意味着 WCF 不会接受多个参数。如果您希望传递多个参数,请将 BodyStyle 属性设置为 Wrapped。
Wrapped:请求和响应都被包装。
WrappedRequest:我们可以包装请求,但不能包装响应。
WrappedResponse:我们可以包装响应,但不能包装请求。
裸露:请求和响应均未包装。这是默认成员。
3) 使用 POSTMAN 工具发送请求以测试响应。
除了所有这些,这里是一个简短的示例,请注意,因为它是一个安静的服务,所以我在 url 本身中发送单个值作为 OData 表示法的一部分。我没有明确提到消息正文样式为 Bare,因为它默认为。
[WebInvoke(Method = "DELETE", UriTemplate = "Employee/{empId}", ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
void DeleteEmployee(string empId);
并在 ajax 调用中
$.ajax({
type: "DELETE",
url: "http://localhost:8080/MyService/EmployeeService/Employee/2",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data);
},
error: function (msg) {
alert(msg);
}
});