发布请求WCF库项目

时间:2017-05-18 15:04:30

标签: c# wcf telecommunication msisdn

我正在尝试在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);

1 个答案:

答案 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);
              }
          });