我正在尝试在WCF服务上创建POST请求,以将服务器AllocateCreditToken添加到特定的MSISDN。
我遇到的问题是,当我启动项目实例并使用我要添加的值加载URL时,我在浏览器上收到一条消息,说“&34;方法不允许"
我不确定我的AllocateCreditToken()方法是否正确。
如果您需要查看代码,请告诉我,因为它是该方法中的一段很长的代码。
谢谢
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "AllocateCreditToken?MSISDN={MSISDN}")]
Stream AllocateCreditToken(string MSISDN);
答案 0 :(得分:1)
你应该检查几件事
1)在WCF服务类下面添加属性。
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
2)您正在使用消息体样式为裸,这意味着WCF不会接受多个参数。如果您希望传递多个参数,请将BodyStyle属性设置为Wrapped。
Wrapped:请求和响应都被包装。
WrappedRequest:我们可以包装请求但不能包装响应。
WrappedResponse:我们可以包装响应但不能包装请求。
Bare:请求和响应都没有被包装。这是默认成员。
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);
}
});