2012-01-11 5 views
1

WCF RIA Servicesには、JSONを有効にするために使用できるMicrosoft.ServiceModel.DomainServices.Hosting.JsonEndpointFactoryが含まれています。 JSONP経由でドメイン間コールを有効にする必要があります。これを実現する既存のDomainServiceEndpointFactoryはありますか?クロスドメインコールを有効にするためにWCF Ria ServicesのJSONPエンドポイントを追加するにはどうすればよいですか?

+0

webHttpBindingのcrossDomainScriptAccessEnabledプロパティが有効になって必要とするものです。 EndPointFactoryがサービスインスタンスを作成しているときにこれを行う方法はありますか? – JJS

答えて

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

希望があれば、 Chris。

+0

ありがとう、これは私が探していたものです。 – JJS

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 

WCF RIA Services V1.0 SP2 RC

System.ServiceModel.DomainServices.Hosting 
System.ServiceModel.DomainServices.Server 

WCF RIA Services Toolkit (September 2011)

Microsoft.ServiceModel.DomainServices.Hosting 
関連する問題