Tag: wcf

从Jquery ajax调用WCF服务时出现404 Not Found错误

我试图使用jquery ajax调用从html页面访问IIS上托管的wcf服务,我无法点击服务,它抛出404找不到错误,我可以知道我应该在jquery ajax调用或web配置中进行更改用于访问IIS或其他远程计算机中托管的服务的文件 HTML页面: var inputdata = { “userId”: “101”}; jQuery.support.cors = true; $.ajax({ url: ‘http:///WcfService1/Service1.svc/GetUserDetails’, data: JSON.stringify(inputdata), type: ‘POST’, dataType : “jsonp”, contentType: “application/json; charset=utf-8”, //jsonpCallback: “handleResponse”, success: function (result) { console.log(result.data); alert(“success”); }, error: function (request, error) { alert(‘Network error has occurred please try again.Please check your connection and try again.’); return;} }); […]

我应该在ajax单页结账时返回html或json

我想用一个很好的单页结账更新当前的ASP.NET webforms电子商务网站,我正在寻找一些关于如何更新数据的“最佳实践”。 该页面将包含几个部分:购物车,用户标识,付款选项,交付选项等。 如果用户更改了付款选项,则可能会导致页面其他部分发生更改,例如交付选项变得不可用且总费用发生变化。 我是否构建了我的Web服务,以便在用户更改页面上的内容时返回完整的预先计算的html? 或者我以json格式返回某种订单对象并更新需要使用javascript更新的所有不同部分? 第二个选项对我来说似乎更干净,但它对于普通页面来说太慢了吗? 或者它是否存在第三种选择?

无法处理带有“操作”的消息

当我从JQuery调用WCF SOAP服务时,有人能告诉我如何解决这个错误吗? 错误: a:ActionNotSupportedThe message with Action ” cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same […]

如何使用jQuery ajax函数调用WCF服务

我创建了简单的WCF服务并将其添加到ASP.NET MVC应用程序中。 该服务有一个方法RepeatString: [OperationContract] public string RepeatString(string s, int times) { string result = “”; for (int i = 0; i < times; ++i) { result += s; } return result; } 我尝试使用post和get方法从视图(.cshtml)调用此方法: function callAjaxService1() { $.post(“~/AjaxService1.svc/RepeatString”, {s : ‘Test’, times : 12}, function(data) { alert(‘data from service’); }, ‘json’); } function callAjaxService1() { $.get(“~/AjaxService1.svc/RepeatString”, […]

如何在WCF中设置cookie并在调用Ajax的成功函数(或其他地方)中读取它

我有一些jQuery JavaScript调用一个简单的WCF Web服务。 我很容易在JavaScript中设置cookie并在服务器端读取它。 这是代码。 客户端(JavaScript): document.cookie = “father=christmas”; 服务器端(WCF中的C#): var cookieHeader = WebOperationContext.Current.IncomingRequest.Headers[System.Net.HttpRequestHeader.Cookie]; if (!String.IsNullOrEmpty(cookieHeader)) { var match = cookieHeader.Split(‘;’).Select(cookie => cookie.Split(‘=’)).FirstOrDefault(kvp => kvp[0] == “father”); if (match != null) { result = match[1]; // result now equals “christmas” } } 但是我也想在服务器上的WCF中设置一个cookie并在客户端上读取它。 这是我的代码没有做到这一点。 服务器端(WCF中的C#): WebOperationContext.Current.OutgoingResponse.Headers[System.Net.HttpResponseHeader.SetCookie] = “cloud=lonely”; 客户端(jQuery JavaScript): $(document).ready(function () { $.ajax({ url: […]

在Sharepoint 2010中对自定义WCF服务进行身份validation

我在SharePoint 2010中创建了一个自定义WCF服务,我试图通过JQuery Ajax请求调用它。 我的自定义WCF服务是根据此处给出的示例建模的: 链接: http : //blog.sharepointbits.com/2010/04/custom-wcf-services-in-sharepoint-2010_17.html 上面的方法给了我一个可以从C#服务器端代码访问的WCF服务,以及一个自定义的InfoPath表单,但是,我无法使用JQuery Ajax获得响应。 我在Stack Overflow上的其他地方读到了使用MultipleBaseAddressWebServiceHostFactory而不是像原始文章所建议的MultipleBaseAddressBasicHttpBindingServiceHostFactory 。 链接: Sharepoint 2010 wcf服务。 用jquery调用方法 这工作,允许我通过JQuery Ajax联系(但不validation)服务,但是, a)我无法再导航到http:// [servername] /_vti_bin/Service.svc/mex并查看WSDL。 此问题意味着我的InfoPath表单也无法连接到服务,因为它们寻找WSDL。 b)即使JQuery Ajax请求命中自定义WCF服务,浏览器也会每次都要求我进行身份validation,即使请求来自登录SharePoint的用户的浏览器。 如果有人知道如何解决问题a)和b)我会非常感激。 制作可以在任何应用程序中使用的服务确实不应该那么困难。

使用jquery和参数调用WCF服务

好吧,这是这些基本问题之一,但我现在用Google搜索并调试了两个小时,错误让我感到惊讶。 简单场景:带有参数的WCF服务,我想通过jquery调用这些参数。 我可以调用没有params的方法,但是使用params,调用永远不会进入.NET中的断点。 ServerCode: [ServiceContract(Namespace = “http://www.myhost.de”)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class MyService { [OperationContract] public int TestMeWithParam(int lastId) { return lastId; } [OperationContract] public int TestMe() { return 5; } } Javascript代码 function BaseServiceCall(serviceName, dataInput, successCB, errorCB) { $.ajax({ type: “POST”, contentType: “application/json; charset=utf-8”, url: BaseUrl + “Services/MyService.svc/” + serviceName, data: dataInput, dataType: “json”, […]

语法错误:jQuery $ .ajax调用中的字符无效在哪里?

我有以下一点jQuery调用WCF方法。 方法调用成功到我可以看到它记录的程度,它确实返回一个布尔值true。 但是,error handling程序将返回“CallIsDataReady中的AJAX调用失败”和“语法错误:无效字符”。 然后它不会将成功路径调用callUpdateGrid。 我找不到无效字符。 救命! function CallIsDataReady(input) { $.ajax({ url: “http://www.blah.com/services/TestsService.svc/IsDataReady”, type: “GET”, contentType: “application/json; charset=utf-8”, data: input, dataType: “json”, success: function (data) { if (!data) { setTimeout(function (inputInner) { CallIsDataReady(inputInner); }, 1000); } else { console.log(“data returned – calling callUpDateGrid”); //Continue as data is ready callUpdateGrid(input); } }, error: function (jqXHR, textStatus, […]

从jQuery到WCF服务的POST在Chrome,Firefox中运行但在IE中不起作用(CORS问题)

我正在尝试从jQuery / knockout web应用程序发布搜索请求。 我按照在WCF中实现CORS的说明进行了操作,并在服务中添加了以下内容: [OperationContract] [WebInvoke(Method = “OPTIONS”, UriTemplate = “*”)] public void GetOptions() { } 搜索请求在Chrome和Firefox中运行良好。 Chrome发送OPTIONS请求,该请求成功处理( 200 )并且access-control标头位于响应中,然后它发送POST ,返回搜索结果。 因此CORS预检工作正常。 但IE是一个不同的故事。 它还发送成功处理的OPTIONS请求,并且access-control头在响应中,但它只是…停止。 它之后不发送POST请求,并且在开发人员工具中具有(aborted)状态。 控制台有XMLHttpRequest: Network Error 0x80070005, Access is denied. 但OPTIONS请求的状态是200 ,它从来没有(据我所知)甚至尝试POST 。 所以我甚至都不知道被拒绝了什么。 我把头发拉到这里。 很明显,这三种浏览器都出现了问题,但为什么只有IE呢? 这些是我添加的标题: requiredHeaders.Add(“Access-Control-Allow-Origin”, “*”); requiredHeaders.Add(“Access-Control-Allow-Methods”, “POST,GET,PUT,DELETE,OPTIONS”); requiredHeaders.Add(“Access-Control-Allow-Headers”, “X-Requested-With,Content-Type,Accept”); requiredHeaders.Add(“Access-Control-Max-Age”, “1728000”); 这是客户端的要求: $.ajax({ url: serviceUrl + “ExemptServices.svc/json/search”, method: […]

如何从WCF服务流下载文件?

我正在尝试通过使用jQuery调用WCF服务来远程下载CSV文件。 由于该文件实际上并不驻留在服务器上,我一直试图将其作为流返回。 由于我使用Content-Disposition标头,客户端的浏览器应自动开始下载具有给定文件名的文件。 我在C#中的WCF服务方法: [OperationContract()] public Stream GetCsvFile(int id) { string s = …; WebOperationContext.Current.OutgoingResponse.ContentType = “text/csv”; WebOperationContext.Current.OutgoingResponse.Headers[“Content-Disposition”] = “attachment; filename=\”file1.csv\””; return GenerateStreamFromString(s); } public Stream GenerateStreamFromString(string s) { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; } 我的jQuery AJAX请求: $.ajax({ type: “POST”, url: serviceUrl, cache: […]