自托管REST Web服务不接受带参数的POST

时间:2016-12-12 15:35:16

标签: c# rest post

希望这是一个简单的问题,但我有一个简单的应用程序是自托管的(工作正常),我可以使用没有参数的POST命中所请求的方法(命中方法但默认参数为null),但是当我尝试以原始JSON格式传递POST请求的BODY中的命名参数时,它会收到400响应,并且由于某种原因从不命中该方法...

感谢任何建议。

[环境:Visual Studio 2015,C#,自托管REST应用程序]

[代码详情]

(Self Hosted app的Web服务托管代码)

WebServiceHost host = new WebServiceHost(typeof(CalculatorServiceREST), new Uri("http://localhost:8000"));
ServiceEndpoint ep = host.AddServiceEndpoint(typeof(ICalculator), new WebHttpBinding(), "");
ServiceDebugBehavior stp = host.Description.Behaviors.Find<ServiceDebugBehavior>();
stp.HttpHelpPageEnabled = false;
host.Open();
Console.WriteLine("Service is up and running");
Console.WriteLine("Press enter to quit ");
Console.ReadLine();
host.Close();

(合同实现类:CalculatorServiceRest.cs)

public class CalculatorServiceREST : ICalculator
{
    [WebInvoke(Method = "POST")]   // POST to:  /RoundUp (with BODY item of 'number' in the request)
    public int RoundUp(double number)
    {
        return Convert.ToInt32(Math.Round(number));
    }

    [HttpPost]   // POST to:  /GetName (with BODY item of 'number' in the request)
    public string GetName(string name)
    {
        return name;
    }
}

1 个答案:

答案 0 :(得分:0)

似乎我必须将以下属性值添加到POST方法中,以便我可以在BODY中传递JSON数据以便将其拾取(这与我使用的方式不同,只能放置[ MVC的HttpPost]属性,它只知道如何选择它。任何人都能提供一些有关它为何与众不同的见解吗?

   [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]