从jQuery调用WCF方法时遇到错误.
当我在localhost上实现它时,调用返回正常,但当服务托管在单独的服务器上时,会抛出拒绝访问错误.
当我在localhost上实现它时,调用返回正常,但当服务托管在单独的服务器上时,会抛出拒绝访问错误.
以下是重现错误的步骤: –
>在本地运行项目并检查服务是否正在运行
e.g.:http://localhost:3369/AppsterWcfService.svc/DoWork
>在本地创建测试客户端(test.html)页面并运行此项目.
单击登录按钮时,它可以正常工作.
>现在在远程服务器上托管服务,并将url替换为托管服务的新url即url.
>现在运行test.html页面,单击按钮.在这里我得到访问被拒绝错误.
我尝试了各种访问服务器的方法,例如:
>通过使用MVC
>处理程序
>简单的.aspx页面
>在jquery ajax调用和web.config文件中添加不同的参数.
>在iis中赋予不同的权限.喜欢网络服务,iuser,匿名,嘉宾等
我想这是与jQuery有某种跨域相关的问题.
任何帮助将不胜感激.
谢谢,
-Sumit
解决方法
要使用jQuery使用跨域WCF REST服务,请在下面找到示例:
我的服务如下:
[ServiceContract] public interface IJSONPService { [OperationContract] [WebGet] string GetDate(); [OperationContract] [WebInvoke] string PostData(string name); }
现在我对上述服务的配置条目如下所示:
<services> <service name="Service.JSONPService"> <endpoint address="" binding="webHttpBinding" behaviorConfiguration="json" bindingConfiguration="defaultRestJsonp" contract="Service.IJSONPService"> </endpoint> </service> </services> <behaviors> <endpointBehaviors> <behavior name="json"> <enableWebScript /> </behavior> </behaviors> </endpointBehaviors> <webHttpBinding> <binding name="defaultRestJsonp" crossDomainScriptAccessEnabled="true"> <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNaMetableCharCount="2147483647" /> <security mode="None" /> </binding> </webHttpBinding>
您需要记下绑定元素“defaultRestJsonp”中的crossDomainScriptAccessEnabled属性,该属性负责确定对JSONP的请求,并从作为查询字符串的URL中适当地转换要包装在回调方法中的响应
现在从您的页面执行以下JavaScript调用上面的WCF REST服务,如下所示:
function TestingWCFRestWithJsonp() { $.ajax({ url: "http://domain.com/Service/JSONPService.svc/GetDate",dataType: "jsonp",type: "GET",timeout: 10000,jsonpCallback: "MyCallback",success: function (data,textStatus,jqXHR) { alert(data); },error: function (jqXHR,errorThrown) {alert('error'); },complete: function (jqXHR,textStatus) {alert('complete'); } }); } function MyCallback(data) { alert(data); }
查看$.ajax方法调用中的jsonpCallback属性.
对Web服务调用的原始请求如下所示:
GET http://localhost/Service/JSONPService.svc/GetDate?callback=MyCallback&_=1343391683779 HTTP/1.1 Host: localhost Connection: keep-alive
WCF REST服务的原始响应如下所示:
HTTP/1.1 200 OK Cache-Control: private Content-Type: application/x-javascript Date: Fri,27 Jul 2012 12:21:23 GMT Content-Length: 27 MyCallback("27\/07\/2012");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。