我创建了许多标准WCF服务(服务合同和主机(svc)都在单独的程序集中)。我在IIS中启动了一个网站来托管服务(即地址为http://services:1000/wcfservices.svc)。
然后在我的网站项目中添加了引用。我可以正常调用这些服务。我需要调用客户端的一些服务。不确定我是否应该查看通过AJAX,JQuery或支持JSON的WCF服务调用WCF服务的文章。任何人都可以提供任何关于配置的想法或经验吗?
我所做的一些更改是在操作合同中添加以下内容:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "SetFoo")]
void SetFoo(string Id);
然后在上面执行界面:
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
然后在服务webconfig中我有这个(parens是尖括号):
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
<baseAddressPrefixFilters>
<add prefix="http://services:1000/wcfservices.svc/"/>>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
然后在客户端我尝试了这个:
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
<compositeScript>
<Scripts>
<asp:ScriptReference
Path="http://Flixsit:1000/FlixsitWebServices.svc" />
</Scripts>
</CompositeScript>
</asp:ScriptManagerProxy>
我试图在javascript中调用这样的服务:
wcfservices.SetFoo(string Id);
什么都没有用。如果是想法或更好的解决方案来调用JSON启用,JQuery等......我愿意做出任何改变。
感谢您提供的任何建议/提示......
答案 0 :(得分:0)
相同的源策略将阻止客户端对位于与提供网页的域不同的域(不同主机)中的服务进行AJAX调用。您可以使用JSONP而不是JSON来完成此工作。您需要更改服务以接受回调函数,并使用JSON数据向客户端提供一些调用此回调的javascript。