0

我正在尝试在 WCF 服务上创建一个 POST 请求,以将服务器 AllocateCreditToken 添加到特定的 MSISDN。

我有一个问题,当我启动项目实例并使用我要添加的值加载 URL 时,我在浏览器上收到一条消息,显示“不允许使用方法”

我不确定我的 AllocateCreditToken() 方法是否正确。

如果您需要查看代码,请告诉我,因为在该方法中它是一段很长的代码。

谢谢

[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "AllocateCreditToken?MSISDN={MSISDN}")]
Stream AllocateCreditToken(string MSISDN);
4

1 回答 1

1

您应该检查的几件事

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);
              }
          });
于 2017-05-19T04:07:30.943 回答