我有一个WCF服务,如下所示 -
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Sync
{
[OperationContract]
[WebInvoke]
public string SyncDataNow(UserData obj)
{
try
{
using (MavenifyEntities db = new MavenifyEntities())
{
bool userExist = db.Users.Any(u => u.Id == obj.UserId);
if (userExist)
{
DataSync data = new DataSync();
data.UserId = obj.UserId;
data.TempId = obj.TempId;
data.Content = obj.Content;
data.CreatedDate = DateTime.Now.ToString();
db.DataSyncs.Add(data);
db.SaveChanges();
return "1";
}
else
{
return "0";
}
}
}
catch (Exception ex)
{
return "error";
}
}
}
[DataContract(Namespace = "")]
public class UserData
{
[DataMember]
public int UserId { get; set; }
[DataMember]
public string Content { get; set; }
[DataMember]
public string TempId { get; set; }
}
当我从POSTMAN调用此服务时,它会收到空数据,请帮我找出我正在做的错误。
我以json格式发送原始数据,如 -
{ “的UserData”:{ “用户ID”: “1”, “TempId”: “asdbsjiadf”, “内容”: “你好”}}。
我的web.config条目是 -
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="PhoneSync.SyncAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="PhoneSync.Sync">
<endpoint address="" behaviorConfiguration="PhoneSync.SyncAspNetAjaxBehavior" binding="webHttpBinding" contract="PhoneSync.Sync" />
</service>
</services>
答案 0 :(得分:0)
您还应该使用Wcf Rest WebHttpBinding
您将面临Cross Domain Messaging
问题。因此,您将禁用交叉消息传递安全性或为jsonp
您的签名也应该是{"UserId":"1","TempId":"asdbsjiadf","Content":"Hello"}
。
如果你想使用{"UserData":{"UserId":"1","TempId":"asdbsjiadf","Content":"Hello"}}
,你应该把它包起来
答案 1 :(得分:0)
确保默认情况下请求/响应为 Json 。我会在 [WebInvoke(RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]中明确指定
也许有意义的是配置一些选项like suggested here
答案 2 :(得分:0)
我通过更改名称&#34; UserData&#34;解决了这个问题。 to&#34; obj&#34;在我的json,即改变
{&#34;的UserData&#34; {&#34;用户ID&#34;:&#34; 1&#34;&#34; TempId&#34;:&#34; asdbsjiadf&#34 ;, &#34;内容&#34;:&#34;你好&#34;}}
到
{&#34;物镜&#34; {&#34;用户ID&#34;:&#34; 1&#34;&#34; TempId&#34;:&#34; asdbsjiadf&#34 ;, &#34;内容&#34;:&#34;你好&#34;}}
现在我收到了我服务中的数据。但我无法理解为什么会这样。请分享原因。