我知道WCF RIA Services有一个可以用来启用JSON的Microsoft.ServiceModel.DomainServices.Hosting.JsonEndpointFactory。 我需要通过JSONP启用跨域调用。是否存在可以实现此目的的DomainServiceEndpointFactory?
答案 0 :(得分:1)
我只需要这样做 - 我覆盖了JsonEndpointFactory并修改了那里的绑定,然后使用新类添加了一个端点。
namespace Bodge
{
public class JsonPEndpointFactory : JsonEndpointFactory
{
public override IEnumerable<ServiceEndpoint> CreateEndpoints(DomainServiceDescription description, DomainServiceHost serviceHost)
{
IEnumerable<ServiceEndpoint> endPoints = base.CreateEndpoints(description, serviceHost);
foreach (ServiceEndpoint endPoint in endPoints)
{
if (endPoint.Binding is WebHttpBinding)
{
((WebHttpBinding)endPoint.Binding).CrossDomainScriptAccessEnabled = true;
}
}
return endPoints;
}
}
}
<endpoints>
<add name="JSONP" type="Bodge.JsonPEndpointFactory, Bodge, Version=1.0.0.0"/>
</endpoints>
然后使用端点和回调查询参数访问您的服务,例如 http://blah/service.svc/JSONP/GetStuff?callback=callbackname
希望有所帮助, 克里斯。
答案 1 :(得分:1)
评论中的格式不是很好,因此将来参考是必需的使用和装配。
非常感谢,这正是我所需要的!为了将来参考,这些是使用声明:
命名空间:
using System.Web;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server;
using Microsoft.ServiceModel.DomainServices.Hosting;
装配体
NETFX 4.0
System.ServiceModel
System.ServiceModel.Web
System.ServiceModel.DomainServices.Hosting
System.ServiceModel.DomainServices.Server
WCF RIA Services Toolkit (September 2011)
Microsoft.ServiceModel.DomainServices.Hosting