Tag: wcf

将JSON发送到WCF Rest Service – 对象始终为null

我试图通过使用REST,WCF和JSON(所有这些技术的新function)来使我的应用程序正常工作。 我让’GET’工作得很好。 正是“POST”导致了我的问题。 正如您将在下面看到的,我使用JSON.stringify打包’我的JSON,然后将POST发送到REST资源。 但是,当对象到达处理请求的WCF方法时,该对象始终为null。 这是代码: $.ajax({ type: “POST”, dataType: “json”, url: “Services/ContactCompanyService.svc/contactcompanies/customers”, contentType: “application/json; charset=utf-8”, data: JSON.stringify({ contactcompany: newCustomer }), success: function (html) { alert(html); } }); 这是配置的东西: 这是合同: [OperationContract] [WebInvoke(Method = “POST”, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = “customers”)] [return: MessageParameter(Name = “ContactCompany”)] ContactCompany AddContactCompany(ContactCompany ContactCompanyObject); 它是实现上述接口的方法,其中ContactCompanyObject为null。 我究竟做错了什么? […]

WCF GET URL长度限制问题:错误请求 – 无效的URL

我试图通过使用GET方法的jQuery AJAX调用来访问WCF服务。 因此,有时URL的参数很长。 当参数变得如此冗长时,jQuery AJAX调用失败,并且什么都不返回。 所以我提出了一个断点并把URL拿出去测试。 当我在浏览器中尝试使用相同的URL时(我尝试过FireFox和Chrome),当URL长度过长时会返回以下内容。 错误请求 – 无效的url HTTP错误400.请求URL无效。 我也检查了长度限制。 当URL中的字符数(编码格式)超过1011个字符(包括http://)时,我才会收到错误。 任何人都有相同的情况,并找到任何解决方案吗? 是Windows限制还是可以通过编程方式通过任何设置进行管理? 我尝试过POST方法,但我不知道我无法使它工作。 因为它需要一些web.config更改。 编辑 我测试过生成错误的URL http://localhost:64973/Member.svc/SaveMemberWithDetail/%7B%22ID%22%7C%222%22,%22TypeID%22%7C%222%22,%22Title%22%7C%22Mr.%22,%22FirstName%22%7C%22Firnas%22,%22MiddleName%22%7C%22%22,%22LastName%22%7C%22Aliyar%22,%22Gender%22%7C%221%22,%22DateOfBirth%22%7C%222000-01-01%22,%22Nationality%22%7C%22Sri%20Lankan%22%7D/%5B%7B%22AddressLine1%22%7C%22Changed%20Address%20Line1%22,%22AddressLine2%22%7C%22Colombo%22,%22City%22%7C%22Colombo%2010%22,%22State%22%7C%22WP%22,%22PostCode%22%7C%2201000%22,%22CountryID%22%7C%221%22,%22ID%22%7C%227%22,%22TypeID%22%7C%221%22%7D%5D/%5B%7B%22Telephone%22%7C%22015154645%22,%22TypeID%22%7C%221%22%7D%5D/%5B%7B%22EmailAddress%22%7C%22gen1@dfs%22,%22ID%22%7C%2226%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%22gen2@jfasd%22,%22ID%22%7C%2227%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%22g1@e.cm%22,%22ID%22%7C%2228%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%22g2@gogle.com%22,%22ID%22%7C%2229%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%22g@go.com%22,%22ID%22%7C%2229%22,%22TypeID%22%7C%221%22%7D%5D/%7B%7D/481 未编码的URL版本: http://localhost:64973/Member.svc/SaveMemberWithDetail/{“ID”|”2″,”TypeID”|”2″,”Title”|”Mr.”,”FirstName”|”Firnas”,”MiddleName”|””,”LastName”|”Aliyar”,”Gender”|”1″,”DateOfBirth”|”2000-01-01″,”Nationality”|”Sri Lankan”}/[{“AddressLine1″|”Changed Address Line1″,”AddressLine2″|”Colombo”,”City”|”Colombo 10″,”State”|”WP”,”PostCode”|”01000″,”CountryID”|”1″,”ID”|”7″,”TypeID”|”1″}]/[{“Telephone”|”015154645″,”TypeID”|”1”}]/[{“EmailAddress”|”gen1@dfs”,”ID”|”26″,”TypeID”|”1″},{“EmailAddress”|”gen2@jfasd”,”ID”|”27″,”TypeID”|”1″},{“EmailAddress”|”g1@e.cm”,”ID”|”28″,”TypeID”|”1″},{“EmailAddress”|”g2@gogle.com”,”ID”|”29″,”TypeID”|”1″},{“EmailAddress”|”g@go.com”,”ID”|”29″,”TypeID”|”1″}]/{}/481 我的参数是Json对象的集合。 我不认为任何字符会导致问题,因为,如果我只是将少数字母数字字符减少到小于限制,它就可以工作。 我正在使用Windows 8 Professional中的Visual Studio 2012 Premium运行我的应用程序,所以它的.NET 4.5和IIS Express随之而来。 进一步的研究 当我试图进一步调查时,这不是我已经提到的限制,即完整url的长度。 但是,每个参数的长度限制为260个字符。 所以,我不确定URL的总长度,但是每个参数(用“/”分隔)都有限制。 我发布的上述URL的问题是电子邮件地址JSON参数长度为261个字符,如下所示。 [{“EmailAddress”|”gen1@dfs”,”ID”|”26″,”TypeID”|”1″},{“EmailAddress”|”gen2@jfasd”,”ID”|”27″,”TypeID”|”1″},{“EmailAddress”|”g1@e.cm”,”ID”|”28″,”TypeID”|”1″},{“EmailAddress”|”g2@gogle.com”,”ID”|”29″,”TypeID”|”1″},{“EmailAddress”|”g@go.com”,”ID”|”29″,”TypeID”|”1″}] 如果我从中删除1个字符,它就可以了。 是浏览器限制吗? 操作系统限制? 更新:解决方案 当我进一步研究这个问题时,我找到了一个对我有用的解决方案。 我在这里更新,因为它可能对遇到这个问题的其他人有用。 这是一个IIS设置 问题是因为,REST URL中每个参数的默认字符限制是260,它在注册表中定义。 因此,您必须更新注册表以增加运行IIS Server / IIS […]

如何将“字符串”转换为“没有时区的时间戳”

我是Postgresql的新手,我正在使用WCF服务。 这是我的代码片段: $.ajax({ url: ‘../Services/AuctionEntryServices.svc/InsertAuctionDetails’, data: JSON.stringify({ “objAuctionEntryEntity”: { “AuctionNO”: ”, “AuctionDate”: $(‘[Id$=”lblAuctionDateVal”]’).text(), “TraderID”: $(‘[Id$=”ddlTraderName”] option:selected’).val(), “Grade”: $(‘[Id$=”ddlGrade”] option:selected’).val(), “Varity”: $(‘[Id$=”ddlVarity”] option:selected’).val(), “QuntityInAuction”: $(‘#txtQuantityForAuction’).val(), “AuctionRate”: $(‘#txtAuctionRate’).val(), “BrokerID”: a[0], “IsSold”: $(‘#chlIsSold’).is(‘:checked’), “CreatedBy”: $.parseJSON(GetCookie(‘Admin_User_In_Mandi’)).UserID, “UpdatedBy”: $.parseJSON(GetCookie(‘Admin_User_In_Mandi’)).UserID, “CreationDate”: GetCurrentDate().toMSJSON(), “IsActive”: true, “AuctionTransaction”: arrAuctionTransaction, “MandiID”: $.parseJSON(GetCookie(‘Admin_User_In_Mandi’)).MandiID, “FarmerID”: _ownerid, “AuctionNO”: _auctionno, “AmmanatPattiID”: _ammantpattiid, “ToTraderID”: b[0], “ToTraderName”: $(‘#txtOtherBuyerNameEN’).val(), “ToTraderName_HI”: $(‘#txtOtherBuyerNameHI’).val() } […]

跨域jQuery Ajax请求和WCF REST服务

我正在调用(Ajax请求)一个WCF REST服务,该请求是一个跨域请求。 如果我在同一个域中部署我的服务,一切都像奶油一样。 最终在生产中,该服务将位于不同的域中。 我正在使用jQuery 1.5.2。 我的服务给我一个错误说: errorThrown: “jQuery15208493315000087023_1334089616458 was not called” textStatus: “parsererror” 虽然在Firefox中我可以看到JSON值,但执行属于Ajax请求的error handling程序。 我的Ajax请求是: function CallService() { $.ajax({ type: “GET”, url: “http://SomeService/EmpService.svc/GetValues?dv=1455”, contentType: “application/json; charset=utf-8”, dataType: “jsonp”, processdata: false, success: function (data) { ServiceSucceeded(data); }, error: function (jqXHR, textStatus, errorThrown) { debugger; alert(“Service Error”); ServiceFailed(jqXHR, textStatus, errorThrown); } }); } 在WCF服务端,我已将CrossDomainScriptAccess配置为true: 我从服务器获得的JSON响应是: […]

使用date将JQuery JSON发送到WCF REST

我知道有很多关于通过JQuery / JSON使用WCF REST的post,但我无法让它工作。 我目前停留在日期参数。 下面是我的C#方法: [OperationContract] [WebInvoke] [TransactionFlow(TransactionFlowOption.Allowed)] string GoodRegister(DateTime pDtTimeStampTransac, Int32 pIDResource, Decimal pQty, enQtyLogType pQtyGoodLogType); 以下是我的JavaScript代码: /// /// Date.prototype.toMSJSON = function () { var date = ‘\\\/Date(‘ + this.getTime() + ‘)\\\/’; return date; }; function botaoclick() { var date = new Date().toMSJSON(); var datavar = { ‘pDtTimeStampTransac’: date, ‘pIDResource’: 1, ‘pQty’: 1 […]

在WCF服务方法中使用JSON

在较大的项目中,我无法获取WCF服务方法来使用JSON参数。 所以我制作了一个较小的测试用例,并且回应了行为。 如果我调试服务,我可以看到服务调用时参数值为null。 Fiddler确认JSON正在发送,JsonLint确认它是有效的。 下面的代码带有调试注释。 [ServiceContract] public interface IWCFService { [OperationContract] [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, UriTemplate = “getstring”)] string GetString(); [OperationContract] [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, UriTemplate = “getplayer”)] //[WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, // ResponseFormat = WebMessageFormat.Json, // UriTemplate = “getplayers”)] Player GetPlayer(); [OperationContract] [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, UriTemplate = “getplayers”)] […]

如何避免在jquery ajax中使用跨域策略来使用wcf服务?

如何避免在jquery ajax中使用跨域策略来使用wcf服务? 我需要在web.config中为跨域策略做些什么?

将复杂对象传递到WCF Rest Service

我有一个操作契约,它接受一个复杂的对象,我通过jQuery调用该操作。 如何使用jQuery传入类似于复杂类型的对象。 以下是操作签名: public Resolution CreateNewResolution(Resolution NewResolution); 我需要在客户端传递一个Resolution对象,但我不知道如何使用jQuery。 有帮助吗? 谢谢

从jQuery访问Web服务 – 跨域

我试图从jQuery客户端访问一个wcf服务 特别是这个例子http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4 当客户端网页与服务位于同一域时,一切正常 一旦我将客户端网页移动到另一个域,它就会中断。 它无法访问服务,请求失败 对于所有示例,ASMX,REST和WCF都会发生这种情况 任何想法如何让这个工作交叉daomain?

如何使用WCF自托管处理Ajax JQUERY POST请求

创建RESTful WCF服务器有很多原因(很容易),如果你可以避免使用ASP及其安全框(如果你所做的只是返回信息的简单请求),那就更好了。 请参阅: http : //msdn.microsoft.com/en-us/library/ms750530.aspx了解如何执行此操作。 我发现处理AJAX(JQUERY)GET请求很容易。 但是在POST中处理JSON很棘手。 以下是简单GET请求合同的示例: [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json)] String Version(); 实现就在这里(返回一个JSON) public partial class CatalogService : ICatalogService { public String Version() { mon.IsActive = true; this.BypassCrossDomain(); ViewModel.myself.TransactionCount++; return ViewModel.myself.VersionString; } } 啊,但如果你想发布一些JSON怎么办? 你会发现很多关于堆栈溢出的文章,告诉你所要做的就是: [OperationContract] [WebInvoke(Method = “POST”, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] BuildResponse BuildToby(BuildRequest request); 它将接收JSON消息,反序列化为Plain .NET对象(PO​​NO)并让您使用它。 事实上,当我在Fiddler中构建请求时,这很好。 POST […]