WCF服务接收空请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WCF服务接收空请求相关的知识,希望对你有一定的参考价值。

var dataToSend = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(mi));

        var req = HttpWebRequest.Create("http://localhost/Service1.svc/json/MethodName");

        req.ContentType = "application/json";
        req.ContentLength = dataToSend.Length;
        req.Method = "POST";
        req.GetRequestStream().Write(dataToSend, 0, dataToSend.Length);

        var response = req.GetResponse();

这里“/ json”是我的端点地址,我的服务配置了多个端点。根据此处的图像,我发送的请求在服务器上收到null。

如果我的请求格式不正确,请建议正确的方式来调用此服务。

//服务界面

[ServiceContract]
public interface IService
{


    [OperationContract]
    [WebInvoke(Method="POST")]
    Response MethodName(Request request);
}

// Service1

  public class Service1 : IService
  {
      public Response MethodName(Request request)
      {
          some logical operation....
      }
  }

//端点配置(Web配置)

<endpoint address="json" behaviorConfiguration="jsonBehavior"
              binding="webHttpBinding" bindingConfiguration="webHttpBindingJson"
              name="jsonn" contract="Service1.IService" />

<endpoint address="xml" behaviorConfiguration="poxBehavior" binding="webHttpBinding"
              bindingConfiguration="webHttpBindingXml" name="xmll" contract="Service1.IService" />

<endpointBehaviors>
    <behavior name="jsonBehavior">          
      <enableWebScript />
    </behavior>
<behavior name="poxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>

<webHttpBinding>
    <binding name="webHttpBindingJson">
      <security mode="None" />
    </binding>
    <binding name="webHttpBindingXml">
      <security mode="None" />
    </binding>
  </webHttpBinding>

//请求类

 [DataContract] 
public class Request 
{ 
   string userMobile; 
   string otp; 

   [DataMember] 
   public string UserMobile 
   { 
        get { return userMobile; } 
        set { userMobile = value; } 
   } 
   [DataMember] 
   public string OTP 
   { 
        get { return otp; } 
        set { otp = value; } 
   }
}
答案

最后我找到了这个。我将json行为配置的端点修改为此,

<behavior name="jsonBehavior">          
      <webHttp defaultBodyStyle ="Bare"/>
      <!--<enableWebScript />-->
    </behavior>

并删除了enableWebScript。最后我的代码工作。

以上是关于WCF服务接收空请求的主要内容,如果未能解决你的问题,请参考以下文章

类型化数据集 + WCF。服务正在接收空数据表

WCF 从 XML 接收空模型

使用 DataContractSerializer 从 WCF 服务接收到的序列化响应

接收 HTTP 响应时发生 WCF 服务错误

问题解决_WCF_WCF 接收我服务的 HTTP 响应时发生错误

WCF 服务 400 错误请求