Tag: wcf

使用json将发送请求发送到RESTful WCF

我已经尝试了每个组合来发送请求从jQuery向RESTful WCF发送POST请求。 有人可以模仿并使其发挥作用。 代码在这里: http : //pastebin.com/Ua97919C 我在过去2年与WCF合作,但每次发送POST请求都会让我很烦恼。 我努力让它在过去的4天里工作,并且经历了至少35-40个post。 最终,此请求将从iPhone发送到WCF。 当我用Fiddler检查时,错误主要是:*服务器遇到处理请求的错误。 exception消息是’传入消息具有意外的消息格式’Raw’。 该操作的预期消息格式是’Xml’,’Json’。 这可能是因为尚未在绑定上配置WebContentTypeMapper。 有关更多详细信息,请参阅WebContentTypeMapper的文档。 请参阅服务器日志以获取更多详 exception堆栈跟踪是:at System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

将复杂类型作为数据传递给jquery ajax post

我的数据模型类如下所示: [DataContract] public class Order {[DataMember] public string Id {get; 组; } [DataMember] public string AdditionalInstructions {get; 组; } [DataMember] public double TotalAmount {get; 组; } [DataMember] public DateTime OrderDate {get; 组; } [DataMember] public Customer Customer {get; 组; } [DataMember] public OrderedProduct OrderedProduct {get; 组; 公共类OrderedProduct {[DataMember] public int Id {get;} [DataContract] 组; } […]

无法将Access-Control-Allow-Origin添加到我的WCF库Project

我试图理解为什么这个ajax被调用不起作用 $.ajax({ type: ‘GET’, url: “http://localhost:8732/Design_Time_Addresses/InMotionGIT_NT.Address.Service/AddressService/json/capitalize”, data: { streetAddress : JSON.stringify(streetAddress) , consumer : JSON.stringify(consumer)} , datatype: “jsonp”, success: function (data) { $(‘body’).append(”+data.IDblah+’ ‘+ data.prueba+”); alert(data.IDblah); } 服务接收数据正确接收并且响应正确。 我为什么做错了? 我尝试将此属性添加到调用的ajax但没有成功crossDomain : true [OperationContract()] [WebInvoke(Method=”GET”, RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)] public string Capitalize(StreetAddress streetAddress,ConsumerInformation consumer) 我得到它的错误是常见的 XMLHttpRequest cannot load Origin http://localhost:50816 is not allowed by Access-Control-Allow-Origin. UPDATE 我尝试通过在App.config文件中添加configuracion将响应添加到响应,但没有成功

jquery ajax调用返回JSON解析错误

我使用jquery调用ajax wcf方法,该方法返回一个对象列表作为JSON字符串。 在fiddler2(在TextView中)检查时,JSON字符串如下所示: {“d”:”[{\”ID\”:\”6b2b8c62-31ce-4df2-982b-054ff5f6be72\”,\”Name\”:\”Carol\”,\”Surname\”:\”IrishWife\”},{\”ID\”:\”d254740a-0a0f-4a1e-9e4f-0812227dd5af\”,\”Name\”:\”Willie\”,\”Surname\”:\”Le Roux\”},{\”ID\”:\”660bf0dd-436a-4588-a9c0-19fd6fdcee23\”,\”Name\”:\”Emmas\”,\”Surname\”:\”Mum\”},{\”ID\”:\”6b9403c5-b728-4e96-bcb1-203e7472eec3\”,\”Name\”:\”Owen\”,\”Surname\”:\”Lima\”},{\”ID\”:\”d52c08fb-4418-4600-960f-243ff4443ee6\”,\”Name\”:\”Tim\”,\”Surname\”:\”Lee\”},{\”ID\”:\”e2aacf5b-8855-44ce-9338-3d39f8ab3349\”,\”Name\”:\”Marcello\”,\”Surname\”:\”MT\”},{\”ID\”:\”578be087-8385-46d6-89de-3db31d352cbc\”,\”Name\”:\”Carlyn\”,\”Surname\”:\”Homegroup\”},{\”ID\”:\”4c805825-2bee-447a-8b75-41ead17db33e\”,\”Name\”:\”George\”,\”Surname\”:\”Homegroup\”},{\”ID\”:\”ae48804f-5e78-42c8-9ba0-4214c98a5a89\”,\”Name\”:\”Isla\”,\”Surname\”:\”Le Roux\”},{\”ID\”:\”f8be2f4f-fedb-4863-8a84-44fddea84ea9\”,\”Name\”:\”Peter\”,\”Surname\”:\”Anderson\”},{\”ID\”:\”15e7644d-ec43-44ff-a959-47e00112da6b\”,\”Name\”:\”Kitty\”,\”Surname\”:\”Corbett\”},{\”ID\”:\”8fd7fccc-335c-4d5c-93b5-4b00f96a9950\”,\”Name\”:\”Natalie\”,\”Surname\”:\”Archibald\”},{\”ID\”:\”09b5aad2-2cf1-488a-962b-4d692b05ddea\”,\”Name\”:\”Miku\”,\”Surname\”:\”Heally\”},{\”ID\”:\”affa369e-5af3-4537-a0f4-71422956da41\”,\”Name\”:\”Steven\”,\”Surname\”:\”Corbett\”},{\”ID\”:\”65f57da3-4f88-4798-9590-83b4ccecfc44\”,\”Name\”:\”Tim\”,\”Surname\”:\”Archibald\”},{\”ID\”:\”53bfb451-f66f-4b6e-b430-8d13c95b30d8\”,\”Name\”:\”Philip\”,\”Surname\”:\”MT\”},{\”ID\”:\”c7f22b9b-4030-4f82-9f75-bbb726cabb73\”,\”Name\”:\”Vincent\”,\”Surname\”:\”Van Der Walt\”},{\”ID\”:\”232577be-3165-4316-a20d-c2f2a09c5382\”,\”Name\”:\”Scott\”,\”Surname\”:\”Lynn\”},{\”ID\”:\”913508a1-5dca-4504-8caf-c8e3dc386fc0\”,\”Name\”:\”Dan\”,\”Surname\”:\”MT\”},{\”ID\”:\”36054a07-b14d-4c1c-b35f-e00875dde7e5\”,\”Name\”:\”Sarah\”,\”Surname\”:\”MT\”},{\”ID\”:\”f14e7d98-e040-4ba9-928f-f2ff48116b0b\”,\”Name\”:\”Josh\”,\”Surname\”:\”IrishDude\”}]”} 当我在fiddler的JSON视图中检查结果时,它显示以下JSON: d=[{“ID”:”6b2b8c62-31ce-4df2-982b-054ff5f6be72″,”Name”:”Carol”,”Surname”:”IrishWife”},{“ID”:”d254740a-0a0f-4a1e-9e4f-0812227dd5af”,”Name”:”Willie”,”Surname”:”Le Roux”},{“ID”:”660bf0dd-436a-4588-a9c0-19fd6fdcee23″,”Name”:”Emmas”,”Surname”:”Mum”},{“ID”:”6b9403c5-b728-4e96-bcb1-203e7472eec3″,”Name”:”Owen”,”Surname”:”Lima”},{“ID”:”d52c08fb-4418-4600-960f-243ff4443ee6″,”Name”:”Tim”,”Surname”:”Lee”},{“ID”:”e2aacf5b-8855-44ce-9338-3d39f8ab3349″,”Name”:”Marcello”,”Surname”:”MT”},{“ID”:”578be087-8385-46d6-89de-3db31d352cbc”,”Name”:”Carlyn”,”Surname”:”Homegroup”},{“ID”:”4c805825-2bee-447a-8b75-41ead17db33e”,”Name”:”George”,”Surname”:”Homegroup”},{“ID”:”ae48804f-5e78-42c8-9ba0-4214c98a5a89″,”Name”:”Isla”,”Surname”:”Le Roux”},{“ID”:”f8be2f4f-fedb-4863-8a84-44fddea84ea9″,”Name”:”Peter”,”Surname”:”Anderson”},{“ID”:”15e7644d-ec43-44ff-a959-47e00112da6b”,”Name”:”Kitty”,”Surname”:”Corbett”},{“ID”:”8fd7fccc-335c-4d5c-93b5-4b00f96a9950″,”Name”:”Natalie”,”Surname”:”Archibald”},{“ID”:”09b5aad2-2cf1-488a-962b-4d692b05ddea”,”Name”:”Miku”,”Surname”:”Heally”},{“ID”:”affa369e-5af3-4537-a0f4-71422956da41″,”Name”:”Steven”,”Surname”:”Corbett”},{“ID”:”65f57da3-4f88-4798-9590-83b4ccecfc44″,”Name”:”Tim”,”Surname”:”Archibald”},{“ID”:”53bfb451-f66f-4b6e-b430-8d13c95b30d8″,”Name”:”Philip”,”Surname”:”MT”},{“ID”:”c7f22b9b-4030-4f82-9f75-bbb726cabb73″,”Name”:”Vincent”,”Surname”:”Van Der Walt”},{“ID”:”232577be-3165-4316-a20d-c2f2a09c5382″,”Name”:”Scott”,”Surname”:”Lynn”},{“ID”:”913508a1-5dca-4504-8caf-c8e3dc386fc0″,”Name”:”Dan”,”Surname”:”MT”},{“ID”:”36054a07-b14d-4c1c-b35f-e00875dde7e5″,”Name”:”Sarah”,”Surname”:”MT”},{“ID”:”f14e7d98-e040-4ba9-928f-f2ff48116b0b”,”Name”:”Josh”,”Surname”:”IrishDude”}] 所以fiddler可以成功解析它,但在客户端上,jquery ajax错误回调函数显示以下错误: Error: No conversion from text to application/json wcf方法定义如下: [OperationContract] [WebGet(ResponseFormat=WebMessageFormat.Json)] public string GetPeople(Guid groupId) { using (SchedulerContext context = new SchedulerContext()) { JavaScriptSerializer ser = new JavaScriptSerializer(); var query = from p in context.People where p.Group_ID == groupId select […]

发布JSON ajax请求与cors无法在IE10 / Edge中工作

背景: –我创建了一个托管在本地系统IIS中的WCF服务。 服务公开GET / POST方法和跨域启用,也可以使用https访问。 要使其可访问,请使用自签名证书。 测试: –当我尝试进行跨域ajax调用时,它可以正常用于GET请求和POST请求(只有那些不接受数据作为json的post方法)在IE10 / Edge中。 我可以在chrome / Firebox浏览器中为任何GET / POST请求进行跨域调用。 只有IE 10 / Edge会导致在ajax调用中传递contenttype:accept / json参数时对POST请求进行跨域调用的问题。 研究: –我阅读了很多博客/ mdn,并了解了其中IE不虔诚地追随cors的cors的规范。 我知道cors规范并没有提供自定义标题/标题的值,因为cors preflight已中止。 我正在制作的ajax请求示例: – var postDT = { “postValue”: “test” }; debugger; $.support.cors = true; $.ajax({ type: “POST”, data: JSON.stringify(postDT), url: “http://ateet3371/Service1.svc/postdata”, contentType: “application/json; charset=utf-8”, dataType: “JSON”, processData: true, success: function […]

wcf REST服务和JQuery Ajax Post:不允许使用方法

谁知道这有什么问题? 我无法从我的wcfrest服务获得json响应。 jQuery的 $.ajax({ type: ‘POST’, url: “http://localhost:8090/UserService/ValidateUser”, data: {username: ‘newuser’, password: ‘pwd’}, contentType: “application/json; charset=utf-8”, success: function(msg) { alert(msg); }, error: function(xhr, ajaxOptions, thrownError) { alert(‘error’); } }); 服务 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] public class UserService: IUserService { private readonly IUserRepository _repository; public UserService() { _repository = new UserRepository(); } public ServiceObject […]

使用jQuery使用WCF服务

到目前为止,我已经使用了Web服务,它运行良好。 我添加了一个新的WCF服务。 我使用jQuery调用服务。 这就是我使用jQuery来使用Web服务的方法: $.ajax({ dataType: ‘json’, processData: false, type: ‘POST’, contentType: “application/json”, url: url, context: s.context, data: JSON.stringify(s.data), error: function (xhr, textStatus, errorThrown) { if (s.error != null) { s.error(xhr, textStatus, errorThrown); } if (s.error_addition != null) { s.error_addition(xhr, textStatus, errorThrown); } }, success: function (data, textStatus, xhr) { s.success(data.d, textStatus, xhr); subscriber.setDone(data.d); } […]

当WCF方法抛出exception时,使用空响应调用jQuery成功回调

我把头发撕成了这个,所以忍受我(这是一个很长的post)。 基础信息 ASP.NET 3.5与ASP.NET兼容模式下的WCF服务 将jQuery与此服务代理一起用于AJAX请求 自定义IErrorHandler和IServiceBehavior实现来捕获exception并提供故障,这些故障被序列化为JSON 我正在使用Cassini进行本地测试(我看过一些线程,讨论在本地调试时出现的问题,但在生产环境中工作正常)。 我遇到的问题是,无论何时从我的WCF服务抛出exception,都会触发$.ajax调用的成功处理程序。 响应为空,状态文本为“成功”,响应代码为202 /已接受。 IErrorHandler实现确实被使用,因为我可以单步执行它并观察创建的FaultMessage。 最后发生的事情是success回调会引发错误,因为响应文本在期望JSON字符串时为空。 error回调永远不会触发。 提供一点洞察力的一件事是从端点行为中删除enableWebScript选项。 我这样做时发生了两件事: 回复不再被包裹(即没有{ d: “result” } ,只是”result” )。 error回调被触发,但响应只是来自IIS的400 / Bad Request黄色死亡屏幕的HTML,而不是我的序列化故障。 我尝试过关于关键字“jquery ajax asp.net wcf faultcontract json”的随机组合的前10个或更多结果中显示的内容,所以如果你打算谷歌搜索答案,请不要打扰。 我希望SO上的某个人之前遇到过这个问题。 最终我想要实现的目标是: 能够在WCF方法中抛出任何类型的Exception 使用FaultContact 捕获ShipmentServiceErrorHandler的exception 将序列化的ShipmentServiceFault (作为JSON)返回给客户端。 调用error回调,以便我可以处理第4项。 可能与以下内容有关: WCF IErrorHandler扩展未返回指定的Fault 更新1 我检查了跟踪System.ServiceModel活动的输出,并在调用UpdateCountry方法后的一个点上抛出了一个exception,消息是 服务器返回了无效的SOAP错误。 就是这样。 一个内部exception抱怨序列化程序期望一个不同的根元素,但我不能破译其他很多东西。 更新2 因此,随着更多的麻烦,我得到了一些工作,虽然不是我认为理想的方式。 这是我做的: 从web.config的端点行为部分中删除了选项。 从服务方法中删除了FaultContract属性。 实现了WebHttpBehavior的子类(称为ShipmentServiceWebHttpBehavior )并覆盖了AddServerErrorHandlers函数以添加ShipmentServiceErrorHandler 。 […]

WCF跨域使用Jsonp错误未捕获SyntaxError:意外的令牌:

我试图使用jQuery在跨域调用webservice。 这是我的代码来调用服务 $(document).ready(function () { $.ajax({ type: ‘GET’, async: false, contentType: “application/json”, url: “http://localhost:52136/Service1.svc/Helloworld?callback=func_callbk”, dataType: “jsonp”, success: function (data) { alert(‘sucesss’) alert(data.d); }, error: function (data) { alert(data); } }); }); func_callback = function (data) { alert(data.data.people[0].id); } 我从服务返回简单的字符串。 public string HelloWorld() { return “Hello World”; } 服务是从,但我收到错误 未捕获的SyntaxError:意外的令牌: 在Chrome的控制台窗口中。 我从浏览中调用服务时收到此字符串: {“HelloWorldResult”:”Hello World”} 请让我知道我哪里错了? 提前致谢。

没有ASP.NET AJAX的JQuery / WCF:

当WCF配置得很好并且jQuery很好地构建其请求/理解响应时,我正在努力获得“神奇”的时刻。 我有服务: 这是由Rick Strahl建议的,以避免在Web.config中定义行为。 我的WCF服务接口位于另一个程序集中: namespace xxx.yyy.WCF.Data { [ServiceContract(Namespace = “yyyWCF”)] public interface IClientBroker { [OperationContract] [WebInvoke(Method=”POST”,BodyStyle=WebMessageBodyStyle.Wrapped,ResponseFormat=WebMessageFormat.Json)] IClient GetClientJson(int clientId); } } 具体的服务类是: namespace xxx.yyy.WCF.Data { [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] class ClientBroker : IClientBroker { public IClient GetClientJson(int clientId) { IClient client=new Client(); // gets and returns an IClient return client; } } } 我的IClient是一个entity framework类,因此适当地使用DataContract […]