![](/img/trans.png)
[英]How to download stream returned from WCF service and that WCF service called from jquery ajax call
[英]How to Call WCF service from ajax?
我有以下提供的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>
您還應該使用Wcf Rest WebHttpBinding
您將面臨Cross Domain Messaging
問題。 因此,您將禁用跨消息傳遞安全性或為jsonp創建自己的行為
並且您的消息應該是{"UserId":"1","TempId":"asdbsjiadf","Content":"Hello"}
作為簽名。 如果要使用{"UserData":{"UserId":"1","TempId":"asdbsjiadf","Content":"Hello"}}
,則應將其包裝起來
確保默認情況下,請求/響應是Json 。 我會在[WebInvoke(RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]中明確指定
也許有意義,請像此處建議的那樣配置一些選項
我已經通過在json中將名稱“ UserData”更改為“ obj”解決了該問題,即更改了
{ “的UserData”:{ “用戶ID”: “1”, “TempId”: “asdbsjiadf”, “內容”: “你好”}}
至
{ “目標文件”:{ “用戶ID”: “1”, “TempId”: “asdbsjiadf”, “內容”: “你好”}}
現在我正在接收服務中的數據。 但是我不知道為什么會這樣。 請分享原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.