在 WCF Rest 服务和 .Net WebAPI 之间通信时无法在 WCF 方法中获取正确的对象

Not able to get the correct object in WCF methods when communicating between WCF Rest services and .Net WebAPI

我正在尝试从 Angular 应用程序调用 WebAPI,然后调用 WCF Rest 服务,但在 WCF 方法中,param 始终为 NULL。 详细检查时,我注意到在 Web API 方法中它接受没有类名的 jSON。即:

{
        "workflowUserName": "xyz",
        "workflowPassword": "abc123"
}

当我尝试将相同的 json 传递给 WCF 服务方法(通过 Postman)时,它给出 NULL,尽管这两种方法具有相同的输入参数,即 MyTestInputParam 。 WCF 方法正在接受对象名称类似的 json。即:

"MyTestInputParam": {
    "workflowUserName": "xyz",
    "workflowPassword": "abc123"
}

这是我的代码: 网页版API

 public class iOPSController : ApiController
{
    [HttpPost, HttpOptions]
    public async Task<HttpResponseMessage> Login(MyTestInputParam MyTestInputParam)
    {
        string json = MyTestInputParam.ToJson();
        System.Net.Http.Headers.HttpRequestHeaders headers = this.Request.Headers;

        HttpResponseMessage responsePostA = new HttpResponseMessage();
        string URL = ConfigurationManager.AppSettings["AplicationServer"].ToString();
        URL = URL + "\Login";
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(URL);

            var content = new StringContent(JsonConvert.SerializeObject(MyTestInputParam), System.Text.Encoding.UTF8, "application/json");
            string jsonContent = content.ReadAsStringAsync().Result;
            var result = await client.PostAsync(URL, content);
            responsePostA = result.EnsureSuccessStatusCode();
        }
        return responsePostA;
    }

WCF 方法

    [ServiceContract]
    public interface IExternalService
    {

        [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/Login")]
        LoginResponse Login(MyTestInputParam MyTestInputParam);
}

请告诉我我做错了什么,我如何在 API 和 WCF 方法中得到相同的响应。

请从 WCF 方法中删除“BodyStyle = WebMessageBodyStyle.Wrapped”标签,您将获得所需的内容。希望这能解决您的问题。 实际上这个 属性 将请求包装在 class 名称中删除这个标签将解决你的问题。